Почему мы используем return в цепочке обещаний, даже если в функции уже есть return? - PullRequest
0 голосов
/ 05 ноября 2018

Я новичок в JavaScript. В следующем коде я могу знать, почему я все еще должен использовать return getRecipe (IDs [2]) вместо простого вызова getRecipe (IDs [2]) в методе .then? Даже у getRecipe () уже есть новый Promise? Я обнаружил, что получу неопределенную ошибку, если не буду использовать return в методе .then. Действительно ли возвращение возвращает обещание, которое мы получаем к следующему тогда? Но почему и как? Большое вам спасибо!

const getIDs = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve([523, 883, 432, 974]);
  }, 1500);
});

const getRecipe = recID => {
  return new Promise((resolve, reject) => {
    setTimeout(
      ID => {
        const recipe = { title: 'Fresh tomato pasta', publisher: 'Jonas' };
        resolve(`${ID} : ${recipe.title}`);
      },
      1500,
      recID
    );
  });
};

getIDs
  .then(IDs => {
    console.log(IDs);
    return getRecipe(IDs[2]);
  })
  .then(recipe => {
    console.log(recipe);
  })
  .catch(error => {
    console.log('Error!!');
  });

1 Ответ

0 голосов
/ 05 ноября 2018

В цепочке утверждений .then, когда вы возвращаете что-то из .then, оно переходит к следующему .then, если оно есть. В этом случае мы используем операторы .then для выполнения нескольких задач, и первая задача - получить рецепт по некоторому идентификатору. Как только этот рецепт получен (в результате функции getRecipe), мы возвращаем его в следующий .then, который имеет задачу console.log'ing рецепт. Если бы мы не возвращали результат getRecipe (ID [2]), у нас не было бы параметра 'recipe' следующего оператора .then

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