Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Node.js中的异步循环返回_Javascript_Node.js_Asynchronous_Node Async - Fatal编程技术网

Javascript 如何从Node.js中的异步循环返回

Javascript 如何从Node.js中的异步循环返回,javascript,node.js,asynchronous,node-async,Javascript,Node.js,Asynchronous,Node Async,使用库进行流控制时,特别是async.forEach,当需要跳过特定项时,如何正确执行回调 例如: async.forEach(bigCollection, function(item, callback) { if(skipThis) { return callback(); // OR BELLOW IS BETTER?? //return process.nextTick(callback); } db.query

使用库进行流控制时,特别是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)
我会破坏我的代码吗


我已经习惯了用
过程。nextTick(回调)
的方式,但是我不确定这样做是否是一种好的做法。

我想说,没有nextTick就可以了

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

如果bigCollection太大,那么在进入循环之前,您将获得溢出。

堆栈溢出?你为什么会碰到这个?我看不出为什么第一种解决方案会导致这种情况,而第二种解决方案不会。另一方面,如果您的集合非常大,那么停止考虑半解决方案,只需将其划分为更小的部分,并逐块处理(例如,您可以将所有内容包装到
async.series
中,并在每个部分中运行
async.forEach
)。