如何在循环中使用可写Streams在Node中顺序写入stream?

我想通过一个循环以特定的顺序将行追加到Node中的可写入stream文件中。

以下是我正在谈论的简化版本:

var fs = require('fs'); var outfile = fs.createWriteStream('outfile.txt'); for (var i = 0; i < 200; i++) { outfile.write('i', function (err, len) { console.log('written'); }); } 

我需要将文件顺序写入,意味着它会按顺序写入12345...etc 。 我的理解是, outfile.write是asynchronous的,这意味着文件可能被乱序写入 – 这是正确的吗?

我从节点文档中看到

请注意,在不等待callback的情况下,在同一个文件上多次使用fs.write是不安全的。 对于这种情况,强烈build议使用fs.createWriteStream。

所以我相信使用stream是最好的,但是,我不确定是否确保数据块成功写入循环中的下一个迭代之前。 我应该怎么做呢? 谢谢。

你可以通过使用fs.writeSync来避免使用fs.createWriteStream ,它没有像fs.write这样的callback问题