0

我想最终将我的代码模块化,以分解我的一个路由文件中的一些功能。我能够做一个承诺链,允许我获取和使用 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)
4

1 回答 1

0

您可以链接多个.then()

你也可以看看async/await
它在 MDN 上有很好的记录:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

希望这可以帮助。

于 2020-01-10T06:15:28.557 回答