javascript - 当返回嵌套在 then block 中的 Promise 时,使用 Promise.all 的 map 会返回未定义的数组

标签 javascript arrays function ecmascript-6 promise

我有一个问题。我目前正在学习如何使用 promise ,但遇到了一个问题,经过大量搜索后我还没有找到答案。我正在尝试使用 map 获取 Promise.all 中处理 then block 的结果的 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

最佳答案

您的 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)
 ));

关于javascript - 当返回嵌套在 then block 中的 Promise 时,使用 Promise.all 的 map 会返回未定义的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54953598/

相关文章:

javascript - 创建新的类实例并将参数应用为数组

javascript - 使用 Node.js 和 Express 提交表单时如何发送日期

c - 返回设置为函数参数子字符串的局部指针是否安全?

javascript - jquery数组按多个元素分组并查找总数

javascript - 在同一个类的另一个方法中调用一个方法

c++ - 涉及 vector 的二进制搜索有问题 (C++)

javascript - 将Excel文件导入Rally

javascript - table 上不重复的随机字母

java - 添加多个字节数组

arrays - Kotlin 二维数组初始化