我有一些类似这样的代码(针对此讨论进行了一些简化)
var inputFile='inputfile.csv';
var parser = parse({delimiter: ','}, function (err, data) {
async.eachSeries(data, function (line, callback) {
SERVER.Request(line[0], line[1]);
SERVER.on("RequestResponse", function(response) {
console.log(response);
});
callback();
});
});
SERVER.start()
SERVER.on("ready", function() {
fs.createReadStream(inputFile).pipe(parser);
});
我想做的是通过命令行 Node 程序运行 CSV 文件,该程序将迭代每一行,然后向服务器发出请求,该服务器以事件 RequestResponse 进行响应,然后我记录响应。 RequestResponse 需要一秒钟的时间,而我现在设置代码的方式只是飞过 CSV 文件,我得到每次迭代的输出,但它主要是我期望的第一次迭代的输出,还有一些第二次迭代的输出。我需要知道如何让迭代等待,直到出现 RequestResponse 事件,然后再继续下一次迭代。这可能吗?
我的这段代码很大程度上是基于 NodeJs reading csv file
但是我对 Node.js 和 async.foreach 有点迷失。任何帮助将不胜感激
最佳答案
我建议你咬紧牙关,花点时间学习 Promise 和 async/await
。然后您可以使用常规的 for 循环并等待网络响应 promise 。
关于Node.js 迭代请求的 CSV 文件,但在继续迭代之前等待响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477307/