我应该使用process.nextTick吗?

lee*_*ell 3 asynchronous node.js

我正试图在使用process.nextTick时解决问题.下面我使用异步库来控制我的代码流,并想知道我是否应该在最终回调中调用nextTick.

async.parallel([
    function (callback) {
        // do something
        callback(data);
    },
    function (callback) {
        // do something
        callback(data);        
    }
], 
// callback
function (data) {
    process.nextTick(function () {
        // do something
    });
});
Run Code Online (Sandbox Code Playgroud)

jos*_*736 5

如果不确切知道你的"做某事"是什么,我认为nextTick在这种情况下你不需要使用任何理由.您可以使用nextTick,当你有理由推迟功能执行事件循环的下一次迭代.您可能需要阅读了解process.nextTick更多详细信息.

另外,请注意async的parallel任务完成回调接受参数err, data,因此您应该这样做:

async.parallel([
    function (callback) {
        // do something
        callback(null, data);
    },
    function (callback) {
        // do something
        callback(null, data);        
    }
], 
// callback
function (err, data) {
    if (err) throw err;
    // do something
});
Run Code Online (Sandbox Code Playgroud)

主要区别在于,如果其中一个并行任务返回错误(callback使用truthy第一个参数调用),则立即调用最终回调.