一个nodejs项目。我试着用承诺运行大量(大约100k)任务。我可以做的是将它转换为Q的workOnebyOne函数。有没有更好的方法来做到这一点?按顺序运行大量的承诺
function workOnebyOne(items, worker) {
var deferred = Q.defer()
function _doNext() {
if (items.length === 0) {
deferred.resolve()
return
}
var item = items[0]
synchronize(worker, item)
.then(function (result) {
items = items.slice(1)
deferred.notify({
item: item,
result: result
})
_doNext()
}, function() {
items = items.slice(1)
_doNext()
})
}
_doNext()
return deferred.promise
}
utils.workOnebyOne(tasks, workerFunction)
使用索引而不是切片数组可能会更有效。 – 2014-12-05 16:02:19
你的分号钥匙坏了吗? – jfriend00 2014-12-05 18:43:03
'synchronize()'做了什么? – Bergi 2014-12-13 12:44:14