运行蓝鸟承诺顺序,没有返回值?

这个问题已经以各种方式提出,但不是那么简单。

这个Promise.all将被重写,以便promise1promise2之前完全运行?

 var promise1 = function() { .. lots of promise stuff }; var promise2 = function() { .. lots more promise stuff }; Promise.all([promise1, promise2]).then(function() { log.info("ran promise1 & promise2"); }); 

Promise.all并行运行promise1和promise2。

您可以使用带有并发选项的Promise.map设置为1。

 var promise1 = function () { return new Promise(function (resolve, reject) { console.log("promise1 pending"); setTimeout(function () { console.log("promise1 fulfilled"); resolve(); }, 1000) }) }; var promise2 = function () { return new Promise(function (resolve, reject) { console.log("promise2 pending"); setTimeout(function () { console.log("promise2 fulfilled"); resolve() }, 50) }) }; Promise.map([promise1, promise2], function (promiseFn) { return promiseFn(); //make sure that here You return Promise }, {concurrency: 1}); //it will run promises sequentially //It logs //promise1 pending //promise 1 fulfilled //promise2 pending //promise 2 fulfilled 

然后使用:

返回从这个承诺链接的新承诺。

 promise1().then(function() { return promise2(); }).then(function() { log.info("ran promise1 & promise2"); });