【发布时间】:2014-04-26 05:14:51
【问题描述】:
我有一个大量使用 async.js 模块的大型 node.js 应用程序。
我有很多这样的代码:
async.series([
function(callback){
sql.update(query, callback);
},
function(callback){
if (something){
sql.update(query2, callback);
}
else{
callback(null);
}
}
]);
最大的问题是 else 语句中的同步回调。我前段时间读到您不应该使用 async.js 这样做,因为它可能会导致意外结果,但我不确定最好的选择是什么。我读到我应该在某些地方使用 process.nextTick,但现在我读到我们不应该使用它,它应该是 setImmediate。
有人能指出我正确的方向吗?谢谢!
【问题讨论】:
-
你能链接到你读到的不应该这样做的地方吗?我没有看到它有问题。这是应该使用异步的方式。当你完成了你回调的函数的执行。调用回调之前,后续函数不会运行。
-
我希望我能找到它。我不久前读过它。我知道需要调用回调,但我认为它应该包含在我提到的函数之一中,以异步调用回调。我们确实有一些奇怪的地方。不确定它是来自这个还是其他什么,但我想我会删除任何可能有问题的东西。
-
我不认为它是“错误的方向”..问题应该是别的..如果没有错误,
callback的第一个参数应该为空,否则.seriescall 只会退出并出现错误。尝试使用console.trace()、断点和更多输出对其进行调试。 -
我同意@Phoenix,我不认为这是你的问题。回调未包含在异步调用中的事实不应该有所作为。无论哪种方式,回调都将被称为同步操作。发生这种情况的刻度无关紧要。我会扔一些日志来看看到底发生了什么。或许看看sql操作中的回调是如何被调用的。
-
我应该明确指出没有一致的错误。我知道如何解决这些问题 :) 时不时地事情不正常。复制并不容易,而且发生在不同的地方。
标签: node.js asynchronous async.js