1
當使用async庫進行流量控制時,特別是async.forEach如果您需要跳過特定項目,您如何正確執行回調。如何從Node.js中的異步循環返回
例子:
async.forEach(bigCollection, function(item, callback) {
if(skipThis) {
return callback();
// OR BELLOW IS BETTER??
//return process.nextTick(callback);
}
db.query(query, callback);
}, callback);
在這我不使用process.nextTick(callback)
情況下,我的風險運行到堆棧溢出,如果bigCollection太大?而且,如果我確實使用process.nextTick(callback)
,我是否會破壞我的代碼?
我已經習慣了這樣做process.nextTick(callback)
的方式,但我不太確定這是一個很好的做法。
堆棧溢出?你爲什麼會遇到這個問題?我看不出第一個解決方案會導致這種情況的原因,而不是第二個解決方案。另一方面,如果你的集合**真的很大,那麼就不要再考慮半解決方案,只需將它分成較小的部分並逐一處理(例如,可以將所有內容包裝到'async.series'中並運行' async.forEach'在每一塊)。 – freakish 2012-07-19 11:19:25