Javascript Node.js和异步错误
我的node.js应用程序结构如下:Javascript Node.js和异步错误,javascript,node.js,async.js,Javascript,Node.js,Async.js,我的node.js应用程序结构如下: async.forever( function(callback) { async.series([ function(callback) { SomeFunction1(function(err, results) { if (err) callback(err); callback(null, results); });
async.forever(
function(callback) {
async.series([
function(callback) {
SomeFunction1(function(err, results) {
if (err) callback(err);
callback(null, results);
});
},
function(callback) {
SomeFunction2(function(err, results) {
if (err) callback(err);
callback(null, results);
});
},
function(callback) {
SomeFunction3(function(err, results) {
if (err) callback(err);
callback(null, results);
});
},
],
function(err, results) {
if (err) console.log(err);
setTimeout(callback, 30000);
});
},
function(err) {}
);
async.forever循环中应暂停30秒,函数SomeFunction1、SomeFunction2和SomeFunction3应在每个循环中串联执行一次
它可以正常工作一段时间,但在一段时间后(有时几天),async.series中的函数(SomeFunction1、SomeFunction2和SomeFunction3)开始在每个async.forever循环中运行多次。
日志显示每个函数每隔几毫秒运行3次
我没有从节点得到任何错误
任何帮助都将不胜感激
每个async.forever
周期,函数开始运行多次
我能想到的唯一一件事是,函数多次调用它们的回调async.js
并不关心这一点,它很乐意启动多个并行运行的循环
解决这些问题的一个好办法是改用承诺。他们与合同约定只触发一次回调,并防止多次解析它们。我想知道为什么不执行
async.series([SomeFunction1,SomeFunction2,SomeFunction3],…)
??您如何知道这是一个永远相同的循环?也许只是setTimeout
等待的时间不够长?@Bergi这里有forever和series,因为series回调处理一些函数的错误并停止执行forever循环,但它不应该永远完全停止,它只是延迟30秒并重新开始。@Bergi知道为什么“setTimeout”等待的时间不够长吗?就像我写的,一次函数在每个永久循环中并行执行3次。我理解它应该做什么,我只是不明白为什么在每个SomeFunctionX
中都有这些过于复杂的额外函数表达式。