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