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

Node.js 多个异步写入节点中的同一文件,node.js,asynchronous,Node.js,Asynchronous,我正在使用fs.writeFile(…)根据用户输入对文件进行修改。我最近遇到了一个bug,其中两个写入请求有效地导致文件被截断 每个写入操作必须按照收到的顺序完成。但是,我不希望用户必须等到写操作完成后才能继续执行下一个任务 什么是将异步写入排队的标准方式或流行模块,以便在写入发生时不阻止用户执行其他工作,并确保不会发生冲突 另外,如果可能的话,我希望对同一个文件进行读取 我最初的想法是编写一个临时文件,然后进行复制,但这似乎没有那么有效。使用异步模块中的async.queue创建并发度为1的

我正在使用
fs.writeFile(…)
根据用户输入对文件进行修改。我最近遇到了一个bug,其中两个写入请求有效地导致文件被截断

每个写入操作必须按照收到的顺序完成。但是,我不希望用户必须等到写操作完成后才能继续执行下一个任务

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

另外,如果可能的话,我希望对同一个文件进行读取


我最初的想法是编写一个临时文件,然后进行复制,但这似乎没有那么有效。

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

  • 将任务添加到队列
  • 当任务运行时,读取现有文件
  • 执行写逻辑
  • 调用异步队列回调,以便可以进行下一次排队写入

  • 这是一个进程的多次写入还是多个进程的多次写入?可能是只将数据追加到文件的
    fs.appendFile()
    。fs.appendFile无法像我那样进行排序插入。这是一个单一的过程。实际上是一个express应用程序,其中文件读取/写入在其自己的模块中。其思想是,用户进行修改并将其注销到一个单独的文件中,然后用户将批准修改,并在此时将修改插入原始文件中。当多个批准连续发生时,会发生截断。“将异步…排入队列的规范方式或流行模块是什么…”使用::)