[英]Run Bluebird Promises Sequentially, without return values?
这个问题已经以各种方式提出,但不是那么简单。
如何重写Promise.all以便promise1
在promise2
之前完全运行?
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");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.