Flow control to keep callbacks in order no matter which one finishs first and handle them as a list.
npm install order
var Order = require('order');
list = new Order(function (idx) {
// handle here ready elements
idx.before; // index of the previous element that is ready before idx.i
idx.i; // index of the element that got ready
idx.after; // index of the next element that is ready after idx.i
this[idx.i]; // the ready element
});
list.push(function (done) {
var element = {value:3}; // create new element
setTimeout(function () { // fake async call
element.value = 5; // now set real value
done(); // say, that this element is ready
}, 23);
return element;
});
When calling done the callback given to the constructor gets called.
It it basically the exact same api like javascripts Array
has with the little exception, that it doesn't take direct values, but functions that return the value.
Also it is not possible to specify an Order
with a given size like new Array(23)
.