I am trying to create an array of specific files in a directory; which will go through a few test cases to make sure it fits a given criteria.
I'm using the fs.readdir
method, but it doesn't return a promise
meaning I cannot push
to an array
.
My idea was to populate an array (arr
) with the files I actually want to output and then do something with that array. But because readdir
is asynchronous and I can't chain a .then()
onto it, my plans are quashed.
I've also tried the same thing with readdirSync
to no avail.
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);
});
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…