首页 > 解决方案 > 嵌套 Map 循环 async/await 与嵌套 for 循环 async/await

问题描述

我有一个map带有异步等待的嵌套循环,我在其中执行 2 条promise.all语句。数据被格式化为 1 个大数组,其中可能包含多个对象数组。内循环将映射数组中的对象,外循环将映射主数组中的数组。

我正在使用map它,因为它很容易通过并行性能而不是顺序来保持这种功能。我不确定是否值得保持并行,或者是否有更好的方法来做到这一点(也许是一个for-each循环)。

这是我目前正在使用的代码(简化/总结)。

    const outerPromise = information.map(async order => {
    const innerPromise = order.moreInformation.map(async singleOrder => {
        if (something) {
            const response = await axios({ ... });
            return response.specificDataField;
        }
    });

    const orders = await Promise.all(innerPromise);
    return orders.filter((obj) => obj);
});

const orders = await Promise.all(outerPromise);

return orders;

抱歉,如果格式稍有偏差,缩进可能会关闭,我无法正确格式化。任何帮助将不胜感激。谢谢!PS 这是用 JS/NodeJs (ExpressJs) 编写的

编辑:我不认为问题出在我之后过滤,因为它是可能会出现空值的对象;取回 innerPromise 后,我需要进行过滤(查看哪些为空?)。话虽如此,确实是这两个map陈述让我觉得好像有更好的方法来做到这一点。

标签: javascriptnode.jsperformanceexpressasynchronous

解决方案


推荐阅读