1

当使用异步库进行流控制时,特别是 async.forEach 在需要跳过特定项目时如何正确执行回调。

例子:

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),但是我不确定这样做是否是一个好习惯。

4

1 回答 1

2

我会说没有 nextTick 没关系。

async.forEach(bigCollection, function(item, callback) {
    if(skipThis) {
        return callback();
    }
    db.query(query, callback);
}, callback);

如果 bigCollection 太大,那么在进入循环之前就会溢出。

于 2012-07-19T11:20:25.923 回答