【发布时间】:2017-05-19 12:57:54
【问题描述】:
我有一些类似这样的代码(对于本次讨论进行了一些简化)
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);
});
我想要做的是通过命令行节点程序运行 CSV 文件,该程序将遍历每一行,然后向服务器发出请求,该服务器以事件 RequestResponse 进行响应,然后我记录响应。 RequestResponse 需要一秒钟的时间,而我现在设置代码的方式只是飞过 CSV 文件,每次迭代我都会得到一个输出,但它主要是我期望的第一次迭代的输出,有一点第二次迭代的输出。我需要知道如何让迭代等到出现 RequestResponse 事件后再继续下一次迭代。这可能吗?
我在很大程度上基于此代码 NodeJs reading csv file
但我对 Node.js 和 async.foreach 有点迷茫。任何帮助将不胜感激
【问题讨论】:
-
如果您可以使用 Promises 和具有
async和await关键字的 Node 7,您的工作将变得容易得多。然后,您可以像以前一样简单地使用传统的for循环。 blog.risingstack.com/async-await-node-js-7-nightly -
这是fedora box上的所有命令行,所以我可能可以使用任何东西,我会看看