【发布时间】:2020-01-10 05:27:29
【问题描述】:
我想最终将我的代码模块化,以分解我的一个路由文件中的一些功能。我能够做一个承诺链,允许我获取和使用 2 条数据。但是,我总共需要在原始承诺上运行 5 个功能。我将发布工作代码,然后发布我正在尝试做的事情,但我无法找到一种方法,因为我知道的异步没有按顺序调用或执行。 编辑:这是我通过 colt Steele 的 udemy 训练营学到的第一个真正的项目。他所做的是让他的代码工作,然后将其重构为自己的文件,然后将其导入他需要的地方。我也在做同样的事情,因为这是我迄今为止所知道的,所以我的索引中的所有函数都通过承诺链接工作。但是我想将它们移动到我的 Marvel.js 并在整个项目中使用它们。
getCharactersComic(character)
getCharacterEvents(character)
getCharacterCreators(character)
getCharacterSeris(character)
getCharacterStories(character)
这就是我的 index.js 中的内容
function getCharactersComic(character){
var charactersComics;
return axios.get('https://gateway.marvel.com:443/v1/public/characters/' + character[0].id + '/comics?limit=10', {
params:{
ts: timeStamp,
apikey: key.MarvelPubKey,
hash: marvelHash
}
})
.then(response =>{
charactersComics = response.data.data.results;
return charactersComics;
})
.catch(err => {
console.log('This is the error from comics: ', err.response);
})
}
router.get("/:id", function(req,res){
var character = axios.get('https://gateway.marvel.com:443/v1/public/characters/' + req.params.id,{
params:{
ts: timeStamp,
apikey: key.MarvelPubKey,
hash: marvelHash
}
})
.then( response =>{
let character = response.data.data.results;
let comics = getCharactersComic(character);
comics.then(comics =>{
comics = comics.find(Marvel.imageCheck);
res.render('character', {character: character , comics:comics});
})
})
.catch(error => console.log('This is the error from id: '));
});
我想在我的 Marvel 文件中获取我的所有函数,以便我可以像这样调用和使用它们,即使我必须同时使用所有函数。
Marvel.getCharactersComic(req.params.id).
Marvel.getCharactersComic(req.params.id)
Marvel.getCharacterEvents(req.params.id)
Marvel.getCharacterCreators(req.params.id)
Marvel.getCharacterSeris(req.params.id)
Marvel.getCharacterStories(req.params.id)
【问题讨论】:
-
getCharactersComic返回一个承诺 .... 使用.then -
我在路由器中做了,但我必须做 5 {.then} 才能获得我需要的所有数据
-
为什么这是个问题?也许更清楚地表明你想做什么
-
听起来你想在五个承诺上调用
Promise.all,并且只使用一个then。 -
@JaromandaX 我已经编辑了我的帖子,我知道它现在很啰嗦,但我希望能详细描述我想要做的事情。
标签: javascript node.js axios es6-promise module.exports