我使用蓝鸟魔法
var fs = Promise.promisifyAll(require('fs'));
Run Code Online (Sandbox Code Playgroud)
并使用
fs.readdirAsync(dest).then(function (val) {
return val;
}).then(function (file) {
...
Run Code Online (Sandbox Code Playgroud)
我的问题是以下代码(工作正常)我是否应该使用相同的以及我如何谈论该mkdir功能.
function createDir(folder) {
return function (req, res, next) {
if (typeof require.cache.per === 'undefined') {
require.cache.per = {};
require.cache.per.mk = false;
}
if (!require.cache.per.mk) {
fs.mkdir(folder, function (e) {
if (!!e && e.code !== 'EEXIST') {
console.log('Error to create folder: ' + err);
}
require.cache.per.mk = true;
next();
});
} else {
next();
}
};
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我应该在这里使用诺言,推荐什么?代码按预期工作......
Promise简化并统一了界面.无论是.promisify()或.promisifyAll()将要做的伎俩.
然后你可以链接这样的一切:
fs.mkdir(dir)
.then(function success(dir) {
...
})
.catch(function failure(err) {
...
})
.finally(function () {
});
Run Code Online (Sandbox Code Playgroud)
但是node.js,最重要的是不要阻止I/O. 无论你是使用Promise还是常规的异步/回调都没关系,只要它不阻塞主线程.
可以在脚本中使用要在shell中运行的同步代码,但对于常规应用程序,您不应该故意使用阻塞I/O操作.