首页 > 解决方案 > nodejs以同步方式创建目录不可靠

问题描述

我正在使用以下代码以同步方式创建目录。它检查目录是否存在,如果存在则删除它并创建它。所有操作都是同步的。我循环这个操作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');

          });
    });
});

标签: node.js

解决方案


如果您使用的是同步函数,则不能使用回调。此外,如果您想删除需要使用的文件夹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');
});

推荐阅读