Promise.all() doesn't guarantee that promises will be resolved in order. How can this be done?
Since you're using Bluebird JS, this can be actually done in a simple way.
In version 2.0, Bluebird introduced the Promise.each
method that does this, for looping a then is simple enough, but since it is so common and got requested time after time eventually it was added as its own method.
function foo(item, ms){ // note bluebird has a delay method
return Promise.delay(ms, item).then(console.log.bind(console))
}
var items = ['one', 'two', 'three'];
Promise.each(items, function(item, i){
return foo(item, (items.length - i) * 1000)
});
Which produces the same result as the other answer, only with less lines of code and it also lets Bluebird perform optimizations on the iteration.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With