Node.js 创建或使用现有目录时避免竞争条件
示例
由于Node的异步特性,请首先创建或使用目录:
用检查它的存在,然后fs.stat()
根据存在检查的结果来创建或使用它,
如果在检查时间到创建时间之间创建了文件夹,则可能导致竞争状态。下面的方法进行包装,并在捕捉错误的包装器中进行包装,以使异常通过(如果已存在)其代码。如果错误是其他错误,例如(拒绝通过),则像本机函数一样抛出或传递错误。fs.mkdir()fs.mkdirSync()EEXISTEPERM
异步版本fs.mkdir()
var fs = require('fs');
function mkdir (dirPath, callback) {
fs.mkdir(dirPath, (err) => {
callback(err &&err.code!== 'EEXIST' ? err : null);
});
}
mkdir('./existingDir', (err) => {
if (err)
return console.error(err.code);
//在这里使用`。/existingDir`
});同步版本fs.mkdirSync()
function mkdirSync (dirPath) {
try {
fs.mkdirSync(dirPath);
} catch(e) {
if (e.code!== 'EEXIST' ) throw e;
}
}
mkdirSync('./existing-dir');
//现在用`。/existing-dir`做点什么
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练