【发布时间】:2017-06-02 21:25:16
【问题描述】:
我创建一个文件流来写一个 csv 文件:
var logger = fs.createWriteStream('restaurants.csv', {
flags: 'w' // 'a' means appending (old data will be preserved)
});
logger.write("sep=,\n");
写完后,我会这样关闭流:
logger.end();
logger.close();
但是当我这样做时,文件的一部分最后会丢失。我试着在关闭流之前睡觉:
await Promise.delay(2000);
logger.end();
logger.close();
突然间,文件完成了。但是超时是一种愚蠢的解决方案。文件流在完成写入后是否发出任何事件。基本上我需要的是:
await logger.doneWriting();
logger.end();
logger.close();
我当然可以承诺任何事件,但它是哪个事件?
【问题讨论】:
-
你试过
logger.on("end", ...),还是logger.on("close", ...)?
标签: javascript node.js bluebird fs