nodejs以同步方式创建目录不可靠

时间:2018-07-26 13:09:19

标签: node.js

我正在使用以下代码以同步方式创建目录。它检查目录的存在,将其删除(如果存在)并创建它。所有操作都是同步的。我将此操作循环了5次。每次我得到不同的结果。有时只创建4个目录,有时只创建全部5个目录。代码中这种不稳定的原因是什么?

fs.readdir(dir, function(err, filenames) {
    if (err) {
        onError(err);
        return;
    }
    filenames.forEach(function(filename) {
        fs.readFile(dir + filename, 'utf-8', function(err, content) {
            if (err) {
                onError(err);
                return;
            }
            AsyncFunc(content, ....)
                .then(newContent => {

   filenames.forEach(function(filename) {

      if (fs.existsSync(currentDirName)) {
                fs.rmdirSync(currentDirName);
         }

      fs.mkdirSync(currentDirName, '0766');

          });
    });
});

1 个答案:

答案 0 :(得分:2)

如果使用同步功能,则不能使用回调。另外,如果要删除文件夹,则需要使用rmdirSync(filename);

var fs = require('fs');
var filenames = ['1','2','3','4'];

filenames.forEach(function(filename) {
  if (fs.existsSync(filename)) {
    fs.rmdirSync(filename);
  }
  fs.mkdirSync(filename, '0766');
});