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