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

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

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()
    }
  });

});
点赞