按顺序运行Bluebird Promises,没有返回值?

Sta*_*cks 3 javascript asynchronous node.js promise bluebird

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

如何重写这个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");
});
Run Code Online (Sandbox Code Playgroud)

Promise.all并行运行promise1和promise2.

rob*_*k86 8

您可以将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
Run Code Online (Sandbox Code Playgroud)