【发布时间】:2017-10-16 14:08:39
【问题描述】:
我正在尝试在目录中创建一组特定文件;这将通过一些测试用例来确保它符合给定的标准。
我正在使用fs.readdir 方法,但它没有返回promise,这意味着我不能将push 传递给array。
我的想法是用我实际想要输出的文件填充一个数组 (arr),然后对该数组执行一些操作。但是因为readdir 是异步的,我不能将.then() 链接到它上面,所以我的计划被取消了。
我也用readdirSync 尝试过同样的事情,但无济于事。
const Promise = require('bluebird');
const fs = Promise.promisifyAll(require('fs'));
var arr = [];
fs.readdirAsync(folder).then( files => {
files.forEach(file => {
fs.stat(folder + '/' + file, (err, stats) => {
if(!stats.isDirectory()) {
arr.push(file);
return;
}
});
});
})
.then( () => {
console.log(arr);
});
【问题讨论】:
-
为什么不能使用回调? --- 您可以编辑您的问题以包含您的努力的minimal reproducible example 吗?
-
“我也用 readdirSync 尝试过同样的事情,但无济于事”。该函数将返回一个文件名数组,在我看来这正是你要找的?
-
添加了一个我正在尝试做的例子。
arr返回[]
标签: javascript node.js fs