一個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