Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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中的setTimeout?_Javascript_Node.js - Fatal编程技术网

Javascript 如何在同步循环中使用Node.JS中的setTimeout?

Javascript 如何在同步循环中使用Node.JS中的setTimeout?,javascript,node.js,Javascript,Node.js,我试图实现的目标是一个客户机,它以定时间隔不断地发送数据。我需要它无限期地运行。基本上是一个模拟器/测试类型的客户端 我对setTimeout有问题,因为它是在同步循环中调用的异步函数。因此,结果是data.json文件中的所有条目同时输出 但我要找的是: 输出数据 等10秒 输出数据 等10秒 app.js: var async = require('async'); var jsonfile = require('./data.json'); function sendDataAn

我试图实现的目标是一个客户机,它以定时间隔不断地发送数据。我需要它无限期地运行。基本上是一个模拟器/测试类型的客户端

我对setTimeout有问题,因为它是在同步循环中调用的异步函数。因此,结果是data.json文件中的所有条目同时输出

但我要找的是:

  • 输出数据
  • 等10秒
  • 输出数据
  • 等10秒
app.js:

var async = require('async');

var jsonfile = require('./data.json');

function sendDataAndWait (data) {
    setTimeout(function() {
        console.log(data);
        //other code
    }, 10000);
}

// I want this to run indefinitely, hence the async.whilst
async.whilst(
    function () { return true; },
    function (callback) {
        async.eachSeries(jsonfile.data, function (item, callback) {
            sendDataAndWait(item);
            callback();
        }), function(err) {};
        setTimeout(callback, 30000);
    },
    function(err) {console.log('execution finished');}
);

您应该传递回调函数:

function sendDataAndWait (data, callback) {
    setTimeout(function() {
       console.log(data);
       callback();
       //other code
    }, 10000);
}

// I want this to run indefinitely, hence the async.whilst
async.whilst(
    function () { return true; },
    function (callback) {
       async.eachSeries(jsonfile.data, function (item, callback) {
           sendDataAndWait(item, callback);
       }), function(err) {};
      // setTimeout(callback, 30000);
    },
    function(err) {console.log('execution finished');}
);

也许您可以使用
setInterval
来代替?谢谢!就这样。该死的回电!:)谢谢是的,回电话。