好的,所以我做了这个函数,它读取一个目录并检查每个文件以查看它是文件还是文件夹,如果它是一个文件然后将它返回到数组。 这里:
function readDirr(dir){
return fs.readdirSync(dir).filter(function(file){
return fs.statSync(path.join(dir, file)).isFile();
});
}
console.log(readDirr("./uploads/")); //-> outputs a array of filenames

所以现在我想要异步地做同样的事情。我试过了,但不能让它起作用。任何人都可以解释如何做到这一点,最好有承诺吗? 谢谢!
编辑: 这是我做的功能:
function readDirr(dir){
return fs.readdirAsync(dir)
.then(function(files){
files.forEach(function(file){
if(fs.statAsync(path.join(dir, file)).isFile()){ //gives error here saying 'undefined is not a function'
return file;
}
})
})
}
console.log(readDirr("./uploads/"));

控制台上的输出是: {_bitField:0, _fulfillmentHandler0:undefined, _rejectionHandler0:未定义, _promise0:未定义, _reciver0:undefined} 然后在if语句中给出错误
Edir2:我骗了这个:
function readDirr(dir){
return fs.readdirAsync(dir)
.then(function(files){
files.forEach(function(file){
fs.statAsync(path.join(dir, file))
.then(function(stat){
if(stat.isFile()){
return file;
}
})
})
})
}
console.log(readDirr("./uploads/"));

{ _bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined }

顺便说一句,我不知道为什么这会被标记为重复..