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 に答える