【发布时间】:2016-01-06 00:21:09
【问题描述】:
我有一组数据,其中包含附表的人员。表格可以有任意数量的行。对于每一行,我想打印出人员和表格的行信息。在第一个脚本中,我在编写每个表格行之前迭代了一个行数。这样做,每行的行数总是正确的。
async.each(data.table, function(array, printCallback) {
rowCount++;
fs.appendFile(fileName, data.firstName + ' ' + data.lastName + ',' + data.email + ',' + data.bd + ',' + key + ',' + array[0] + ',' + array[1] + ',' + array[2].slice(0, array[2].indexOf(' ')) + '\n', function(err){
if (err) { console.log(err); }
printCallback();
});
});
如果我将 rowCount 移动到 appendFile() 方法的回调中,那么 rowCount 只会随着每个人而更新,而不是每个人的每个表行。因此,如果第一个人有三行,则每一行的 rowCount 都相同。
async.each(data.table, function(array, printCallback) {
fs.appendFile(fileName, data.firstName + ' ' + data.lastName + ',' + data.email + ',' + data.bd + ',' + key + ',' + array[0] + ',' + array[1] + ',' + array[2].slice(0, array[2].indexOf(' ')) + '\n', function(err){
if (err) { console.log(err); }
rowCount++;
printCallback();
});
});
fs.appendFile 不应该被阻塞吗?并且 async.each 一次限制为一行,因此 rowCount 应该以任何一种方式在每一行之后迭代,有点它不以这种方式工作。我在这里错过了什么?
【问题讨论】:
标签: node.js asynchronous async.js