簡體   English   中英

按順序運行Bluebird Promises,沒有返回值?

[英]Run Bluebird Promises Sequentially, without return values?

這個問題已經以各種方式提出,但不是那么簡單。

如何重寫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");
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM