Экспорт обещания для использования в другом обещании - PullRequest
0 голосов
/ 10 января 2020

Я хочу, чтобы в конечном итоге мой модуль был модульным, чтобы разбить некоторые функции, которые есть в одном из моих файлов маршрутов. Мне удалось создать цепочку обещаний, которая позволила мне получить и использовать 2 фрагмента данных. Тем не менее, у меня есть всего 5 функций, которые мне нужны для выполнения первоначального обещания. Я опубликую рабочий код и затем то, что я пытаюсь сделать, но я не могу найти способ сделать это, так как я знаю, что asyn c не вызывается или не выполняется по порядку. РЕДАКТИРОВАТЬ : Это мой первый настоящий проект, который я узнал через буткемпы Кольта Стила на Удеми. Что он делает, так это заставляет свой код работать и затем реорганизует его в свой собственный файл, а затем импортирует его туда, где ему это нужно. Я делаю то же самое, потому что это то, что я знаю до сих пор, поэтому у меня есть все мои функции в моем индексе, которые работают цепочкой обещаний. Однако я хочу переместить их в мой Marvel. js и использовать их все в моем проекте.

getCharactersComic(character)
getCharacterEvents(character)
getCharacterCreators(character)
getCharacterSeris(character)
getCharacterStories(character)

Это то, что в моем индексе. 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)

1 Ответ

0 голосов
/ 10 января 2020

Вы можете объединить несколько .then()

Вы также можете взглянуть на async/await.
Это хорошо задокументировано в MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...