多个异步写入节点中的同一文件

nat*_*asm 1 asynchronous node.js

我正在使用基于用户输入的文件编写修改fs.writeFile(...).我最近遇到了一个错误,其中有两个写入请求有效地导致文件被截断.

每个写操作必须按接收顺序完成.但是我不希望用户在继续执行下一个任务之前必须等待写入完成.

排队异步写入的规范方式或流行模块是什么,以便在写入发生时不阻止用户执行其他工作,并保证不发生冲突.

另外,如果可能的话,我希望读取发生在同一个文件中.

我最初的想法是写一个临时文件,然后复制,但这似乎不那么有效.

Eva*_*iss 5

使用async模块中的async.queue创建并发为1的任务运行器(一次只能运行一个操作).发生新编辑时,将其添加到队列中.你的逻辑如下:

  1. 将任务添加到队列.
  2. 任务运行时读取现有文件.
  3. 执行你的写逻辑.
  4. 调用异步队列回调,以便进行下一次排队写入.