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`做点什么
热门推荐
10 搞笑祝福语生日老师简短
11 为朋友订婚祝福语简短
12 名人写信结尾祝福语简短
13 感谢母亲祝福语 简短精辟
14 单位搬迁员工祝福语简短
15 立碑祝福语简短精辟英语
16 订婚红包吉利祝福语简短
17 参加省运会祝福语简短英语
18 升学奖励祝福语大全简短