node.js - 处理来自 Promise.all 的一系列 Promise

标签 node.js promise es6-promise

我对 Promise 还很陌生,我目前所做的所有道路都将我引向 Promise.all() ,但我不知道如何处理结果。

我有一些这样的数据

let data = {
  "format_oid":["35474527960032","2595837960032"]
};

然后我将其传递给类似的函数

server.js

jobHandler.handle(data)
  .then((info) => {
    console.log(info);
  })
  .catch((err) => {
    console.error(err);
  });

在我的jobHandler内我有课

jobHandler.js

class Handler {
  // constructor etc
  handle(data) {
    return this.extract(data);
  }

  extract(data) {
    let request = data.format_oid.map( (releaseId) => {
      return this._getReleaseId(releaseId);
     });
     return Promise.all(request);
  }

  _getReleaseId(releaseId) {
    return new Promise( (resolve, reject) => {
      if (_hasRelease(releaseId)){
        resolve('yay');
      } else {
        reject('boo');
      }
    });
}

目前request将有一系列 Promise,如 [ Promise { <pending> }, Promise { <pending> } ]

然后我将如何在我的 server.js 中处理这组 promise ?

最佳答案

一 promise ,一结果。 Promise.all() 解析为一组结果,原始 Promise 数组中的每个 Promise 都有一个结果,其顺序与 Promise 相同。

how would I then handle this array of promises in my server.js?

aHandlerObject.extract(data).then(results => {
   // results is an array of resolved values
   // one for each call to this._getReleaseId(...)
}).catch(err => {
   // handle error here
});

关于node.js - 处理来自 Promise.all 的一系列 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48307513/

相关文章:

c++ - 在 Linux 平台上从 Node.js 连接到 DB2

node.js - Azure 上的 prerender.io Node.js 预渲染服务器

javascript - 重定向到另一个页面后循环中的陈旧元素引用

javascript - Nodejs Promise() 错误吞没

javascript - 使用es6promise顺序进行远程调用

javascript - 如何使用绝对路径构建 index.html 引用 Assets ?

node.js - Webstorm:调试 node.js sails 应用程序

javascript - 我如何等待 Angular4 HttpClient 响应?

javascript - 为什么我的 javascript Promise 卡在 "pending"上?

Javascript Promise().then 防止在执行第一次调用之前重新调用该函数