在Node.js中处理之前,请等待文件完成写入磁盘

在Node.js中处理之前,请等待文件完成写入磁盘,node.js,Node.js,我有一个节点函数,它检查一个文件是否存在,然后如果它确实存在,该函数将执行一些进一步的处理。我的问题是,节点正在检查我的文件是否存在,但它并没有等待文件完成写入。在执行函数的其余部分之前,如何查看文件是否退出并等待文件写入完成 var doStuff = function(filename, callback) { // writing to file here fs.exists(filename, function(exists) { if (exists) {

我有一个节点函数,它检查一个文件是否存在,然后如果它确实存在,该函数将执行一些进一步的处理。我的问题是,节点正在检查我的文件是否存在,但它并没有等待文件完成写入。在执行函数的其余部分之前,如何查看文件是否退出并等待文件写入完成

var doStuff = function(filename, callback) {


  // writing to file here

  fs.exists(filename, function(exists) {
    if (exists) {
      // do stuff
      callback()
    }
  });

});

我看到有一个同步版本的
fs.exists
。我应该用这个吗?或者我应该添加一个setTimeout调用,以便在文件上actin之前等待一小段时间?什么选项最好?

只需将它放入
fs.writeFile
回调中即可。不过,请务必检查是否有错误,这样可以省去调用fs.exists的麻烦。:

fs.writeFile(filename, "stuff to write", function (err) {

  if (err) {
    // something went wrong, file probably not written.
    return callback(err);
  }

  fs.exists(filename, function(exists) {
    if (exists) {
      // do stuff
      callback()
    }
  });

});

我看不到您的代码片段中有任何写入内容。写入内容发生在
fs.exists
检查之前。我已经添加了一条注释来表示我在哪里写作。这还不够。你问了一个关于写作的问题,然后期望我们猜测你是如何做到的;)这是行不通的。显然,当执行回调时,不能保证文件系统级别上的文件写入已经完成。