我的 Node.js 应用程序结构如下:
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 次,间隔几毫秒。
我没有从 Node 收到任何错误。
任何帮助将不胜感激。
最佳答案
the functions starts to run multiple time per
async.forever
cycle
我唯一能想到的是你有多次调用回调的函数。 async.js
不关心这一点,并且很乐意触发多个周期并行运行。
解决此类问题的一个好主意是使用 Promise。他们的签约人是the spec仅触发一次回调,并防止多次解析它们。
关于javascript - Node.js 和异步错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24073132/