【发布时间】:2014-10-22 21:21:50
【问题描述】:
我正在使用fs.writeFile(...) 根据用户输入对文件进行修改。我最近遇到了一个错误,其中两个写入请求有效地导致文件被截断。
每个写入操作都必须按照接收到的顺序完成。但是,我不希望用户必须等待写入完成才能继续执行下一个任务。
将异步写入排队的规范方式或流行模块是什么,这样在写入发生时用户不会被阻止做其他工作,并保证不会发生冲突。
此外,如果可能,我希望读取同一文件。
我最初的想法是写一个临时文件然后复制,但这似乎效率不高。
【问题讨论】:
-
这是一个进程的多次写入还是多个进程的多次写入?
-
也许
fs.appendFile()只是将数据附加到文件中。 -
fs.appendFile 不会像我做排序插入一样工作。这是一个单一的过程。实际上是一个快速应用程序,其中文件读取/写入位于其自己的模块中。这个想法是用户进行的修改被注销到单独的文件中,然后用户将批准修改,此时修改被插入到原始文件中。当多个批准连续发生时发生截断。
-
“什么是规范的方式或流行的模块来排队异步......”使用async queue。 :)
-
2022 和问题仍然存在 :) 我很高兴终于找到了能确认我的附加文件的人。在我的例子中,Nuxt 静态站点生成器脚本有时会将不同的状态写入同一个 state.js 文件,从而导致附加的损坏状态文件破坏页面上的整个 JS。知道了问题的根源,我要去准备一些 PR ......你最终使用了建议的 async.queue 方法吗?
标签: node.js asynchronous