javascript - 使用 Promise.all 从函数返回值

标签 javascript asynchronous promise

我正在尝试返回一个使用异步调用构建的数组,如下所示:

我希望在调用 foo() 的函数中使用 myArr

 function foo(){

    let promiseArray = [];
    let singlePromise;
    let myArr = [];

    for(let node of Nodes){

      singlePromise = getSomePromise(node);
      singlePromise.then(function(result){
        myArr.push(bar(result));  
      });

      promiseArray.push(singlePromise);
    }

    // return Promise.all(promiseArray)? but then I lose myArr
  }

那么我如何返回myArr

最佳答案

推送解析为您需要的值的 promise ,而不是推送到 myArr:

function foo() {
    const promiseArray = [];

    for (const node of Nodes) {
        const singlePromise =
            getSomePromise(node).then(function (result) {
                return bar(result);
            });

        promiseArray.push(singlePromise);
    }

    return Promise.all(promiseArray);
}

如果您使用的是像 Bluebird 这样的 Promise 库(强烈推荐),你甚至可以这样做:

const foo = () =>
    Promise.map(Nodes, node =>
        getSomePromise(node).then(bar)
    );

如果Nodes是一个数组:

const foo = () =>
    Promise.all(Nodes.map(getSomePromise)).map(bar);

关于javascript - 使用 Promise.all 从函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42746319/

相关文章:

javascript - 将 async/await 与 forEach 循环结合使用

asynchronous - 如何延迟AngularJS App初始化?

javascript - JSON.parse() 是否需要双引号?

javascript - 联系表格 7 : display/hide div on selection

javascript - 检查变量是否小于数组中的每个值

java - if/switch 评估是原子的吗?

javascript - Google map 关闭街景 (JQuery)

javascript - Google map 异步添加标记

wcf - 如何等待异步 WCF 服务完成?

Javascript `await` "SyntaxError: Unexpted identifier"即使我在 `async` 函数中等待