node.js async.js nextTick vs setImmediate

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

我有很多这样的代码:

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

]);

最大的问题是else语句中的同步callback。 我读了一段时间,你不应该这样做与async.js,因为它可能会导致意想不到的结果,但我不知道什么是最好的select。 我读过,我应该在一些地方使用process.nextTick,但现在我正在阅读,我们不应该使用它,它应该设置为立即。

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

最后,我终于find了我记得读过的参考资料。

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

他在第3条中讨论了一般情况,与我的问题更直接相关,以回应页面上的第一条评论。

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

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

“你需要确保你的函数是asynchronous运行的 – 如果你不知道它是否是asynchronous的,你可以使用setImmediate强制它是asynchronous的”

所以,这就是我要做的答案。 我将在setImmediate中包装任何同步callback。