我正在尝试在bluebird promises中编写一堆异步fs
调用。除了我担心性能之外,这一切都很好。我不知道and函数是并行执行还是顺序执行。这是我的代码:.map
.filter
var Promise = require('bluebird'),
fs = Promise.promisifyAll(require('fs'));
module.exports = getDirListing;
function getDirListing(path) {
function toFullPath(file) {
return path + file;
}
function onlyDirs(file) {
return fs.statAsync(file).then(function(file) {
return !file.isFile();
});
}
function ignoreHidden(name) {
return !(name.substring(0,1) === '.');
}
function toModuleNames(dir) {
return dir.replace(path, '');
}
return fs.readdirAsync(path)
.map(toFullPath)
.filter(onlyDirs)
.map(toModuleNames)
.filter(ignoreHidden);
}
我特别关心对的调用,onlyDirs
因为它会进行一堆异步fs.stat
调用,并且可以/应该并行。我尝试查看他们的 api 文档,但我没有看到任何关于并行化的信息。
注意:我目前无法使用 ECMAScript6 生成器(很遗憾)。
此外,欢迎任何其他关于性能的指针。