Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js和异步错误_Javascript_Node.js_Async.js - Fatal编程技术网

Javascript 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); });

我的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次

我没有从节点得到任何错误

任何帮助都将不胜感激

每个
async.forever
周期,函数开始运行多次

我能想到的唯一一件事是,函数多次调用它们的回调
async.js
并不关心这一点,它很乐意启动多个并行运行的循环


解决这些问题的一个好办法是改用承诺。他们与合同约定只触发一次回调,并防止多次解析它们。

我想知道为什么不执行
async.series([SomeFunction1,SomeFunction2,SomeFunction3],…)
??您如何知道这是一个永远相同的
循环?也许只是
setTimeout
等待的时间不够长?@Bergi这里有forever和series,因为series回调处理一些函数的错误并停止执行forever循环,但它不应该永远完全停止,它只是延迟30秒并重新开始。@Bergi知道为什么“setTimeout”等待的时间不够长吗?就像我写的,一次函数在每个永久循环中并行执行3次。我理解它应该做什么,我只是不明白为什么在每个
SomeFunctionX
中都有这些过于复杂的额外函数表达式。