我有一个问题。我目前正在学习如何使用Promise,但是遇到了一个问题,经过大量搜索后我仍然找不到答案。我正在尝试使用map获取一个Promise.all中的then块的结果的promise数组。但是,以下方法不起作用,这里出了什么问题?
let promises = myArray.map(result =>
{
searchPromise(result.type).then((searchReply) =>
{
return processReply(result, searchReply)
});
}
);
Promise.all(promises).then(c => console.log(c)); //array of Undefined, but
//want to get results from
//processReply function
答案 0 :(得分:5)
您的map
函数不返回任何内容,仅返回您的then
函数:
let promises = myArray.map(result =>
{
return searchPromise(result.type).then((searchReply) =>
{
return processReply(result, searchReply)
});
}
);
或者,忽略注释中的花括号,以强制返回:
let promises = myArray.map(result =>
searchPromise(result.type).then((searchReply) => processReply(result, searchReply)
));
答案 1 :(得分:1)
您可能会用undefined
填充数组,因为对myArray.map
的调用未返回任何内容,因此隐式返回了undefined
。假设searchPromise
和processReply
都返回一个Promise
,这应该可以工作:
let promises = myArray.map(result => {
return searchPromise(result.type).then((searchReply) => {
return processReply(result, searchReply)
});
});
Promise.all(promises).then(c => console.log(c));