我是JavaScript新手。在下面的代码中,我是否知道为什么我仍然必须使用return getRecipe(IDs [2])而不是仅在.then方法中调用getRecipe(IDs [2])的原因?甚至getRecipe()已经在其中返回了新的Promise吗?我发现如果不在.then方法中使用return,将会收到未定义的错误。回报实际上是回报我们到达下一个承诺的承诺吗?但是为什么以及如何?非常感谢!
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!!');
});
答案 0 :(得分:1)
在一连串的.then语句中,当您从.then返回内容时,它将转到下一个.then(如果有)。在这种情况下,我们使用.then语句执行多个任务,并且第一个任务是根据某个ID获取配方。收到此配方后(由于getRecipe函数的结果),我们将其返回到下一个.then,后者的任务是console.log'ing配方。如果不返回getRecipe(ID [2])结果,则下一个.then语句将没有'recipe'参数