我正在尝试从数组中获取值并在文本文件中写入如下代码。
while(filedataarr.length>0) {
firstelement = filedataarr.shift();
//console.log(firstelement);
fs.appendFile("D:\\Temp\\testclient.txt", firstelement+"\n", function(err) { if (err) throw err; });
}
它实际上正在工作,我可以在文本文件中看到数据。但问题是,线的顺序是不同的。当我取消注释console.log时,它的工作原理。我认为这是因为异步调用而发生的。我不知道如何处理这件事。
Data Comparison
Array Data File Data
11:41:24:562,9057 11:41:24:562,9057
11:41:24:567,1025 11:41:24:569,8872
11:41:24:569,8872 11:41:24:567,1025
11:41:24:571,1572 11:41:24:571,1572
11:41:24:573,429 11:41:24:573,429
11:41:24:574,61 11:41:24:577,3683
11:41:24:576,4863 11:41:24:574,61
11:41:24:577,3683 11:41:24:576,4863
11:41:24:578,8483 11:41:24:578,8483
17:11:53:826,1757 17:11:53:826,1757
请帮忙。
答案 0 :(得分:4)
您正在执行同步操作,您希望以同步方式执行该操作。
由于fs.appendFile
是异步操作,因此您无法保证文件中的下一行是数组的最后一项。
您可以尝试:
while(filedataarr.length>0) {
firstelement = filedataarr.shift();
fs.appendFileSync("D:\\Temp\\testclient.txt", firstelement+"\n" );
// ^ sync will stop the execution of the loop until the operation
// is finished
}