node.js async.js nextTick vs setImmediate

Chr*_*tie 9 asynchronous node.js async.js

我有一个大量使用async.js模块的大型node.js应用程序.

我有很多像这样的代码:

async.series([
    function(callback){
        sql.update(query, callback);
    },
    function(callback){
        if (something){
            sql.update(query2, callback);
        }
        else{
            callback(null);
        }
    }
Run Code Online (Sandbox Code Playgroud)

]);

最大的问题是else语句中的同步回调.我读了一段时间,你不应该用async.js这样做,因为它可能会导致意想不到的结果,但我不确定最好的选择是什么.我读到我应该在某些地方使用process.nextTick,但现在我正在读取我们不应该使用它,它应该是setImmediate.

有人能指出我正确的方向吗?谢谢!

Chr*_*tie 6

我终于找到了我记得读过一段时间的参考文献.

它在这个页面上:http: //caolanmcmahon.com/posts/nodejs_style_and_structure/

他讨论了规则#3中的一般情况,并在回应页面上的第一条评论时更直接地与我的问题相关联.

即使它不是我的随机错误的原因,我想根据作者的意图使用该模块,这是问题的关键.

在本文中,他提到使用process.nextTick,但我真的认为node在这种情况下试图摆脱它,我在一个月前的异步问题线程中发现了一个响应:

"你需要确保你的函数是异步运行的 - 如果你不知道它是否是异步的,你可以使用setImmediate强制它是异步的"

所以,这就是我要回答的答案.我将在setImmediate中包装任何同步回调.

  • 链接破坏BTW. (2认同)