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.
有人能指出我正确的方向吗?谢谢!
我终于找到了我记得读过一段时间的参考文献.
它在这个页面上:http: //caolanmcmahon.com/posts/nodejs_style_and_structure/
他讨论了规则#3中的一般情况,并在回应页面上的第一条评论时更直接地与我的问题相关联.
即使它不是我的随机错误的原因,我想根据作者的意图使用该模块,这是问题的关键.
在本文中,他提到使用process.nextTick,但我真的认为node在这种情况下试图摆脱它,我在一个月前的异步问题线程中发现了一个响应:
"你需要确保你的函数是异步运行的 - 如果你不知道它是否是异步的,你可以使用setImmediate强制它是异步的"
所以,这就是我要回答的答案.我将在setImmediate中包装任何同步回调.