node.js - 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');
});
});
});
解决方案
如果您使用的是同步函数,则不能使用回调。此外,如果您想删除需要使用的文件夹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');
});
推荐阅读
- git - 当上面有多个分支时,如何在过去的一些任意提交之间注入一个提交?
- javascript - 等效于 React 的 _isMounted for vanilla javascript 的 Stripe/js(元素)
- java - 删除 ControlsFX CheckTreeView 中父子检查状态之间的连接
- azure - 无法保存 Kik 频道配置 - Azure 机器人服务
- json - 解析从 JSON 到 CSV 的批量转换
- logic - “猫有尾巴”的谓词逻辑
- python - Python:更改:如何使局部变量成为全局变量?
- variables - 如何从单个玉混合中调用不同的变量?
- python - Pandas 中的滚动百分比排名
- java - 线程组调用中断后离开僵尸线程