并行创造承诺

时间:2016-03-02 14:12:38

标签: javascript promise ecmascript-6 es6-promise

只需用 es6和承诺来尝试。

有没有办法使用promises并行执行多个任务?

我想一次启动多个操作,并使用Promise创建一个新的promise,它将在解析所有输入promise时解析。

新承诺成功,如果传入的承诺都不会失败;否则,它将失败并显示最后一个错误。

我所知道的所有承诺是 - 如何创造承诺并将其链接起来。

let promise = new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…

  if (/* everything turned out fine */) {
    resolve("Successfully completed!");
  }
  else {
    reject(Error("Error occurred!"));
  }
});

promise.then(function(result) {
  console.log(result); // "Successfully completed!"
}, function(err) {
  console.log(err); // Error: "Error occurred!"
});

1 个答案:

答案 0 :(得分:2)

您正在寻找Promise.all

const p1 = Promise.resolve(1)
const p2 = Promise.resolve(2)
const p3 = Promise.resolve(3)

const p4 = Promise.all([p1, p2, p3])

p4.then(values => console.log(values)) // [1, 2, 3]