И я подобное писал для обработки массива и секвенции, но в примерах выше оно не помогает
// index - startIndex
// processor - function(item, itemIndex, next)
module.exports.processArrayAsync = function (array, index, processor, onEndCallback) {
index = typeof index !== 'undefined' ? index : 0;
if (index >= array.length) {
if (onEndCallback) onEndCallback();
return;
}
process.nextTick(function () {
processor(array[index], index, function () {
module.exports.processArrayAsync(array, index + 1, processor, onEndCallback);
});
});
};
module.exports.runJobsQueueAsync = function(jobs, index, onEndCallback) {
index = typeof index !== 'undefined' ? index : 0;
if (index >= jobs.length) {
if (onEndCallback) {
onEndCallback();
}
return;
}
process.nextTick(function () {
jobs[index](function () {
module.exports.runJobsQueueAsync(jobs, index + 1, onEndCallback);
})
});
};