我知道有更好的方法可以做到这一点,并且诸如serve-index之类的工具已经作为npm包存在,用于列出目录结构,但我想在我的设备上测试一下,因为我对使用Node还很陌生.js 和 JavaScript。
目前,我的代码如下,我很困惑为什么我的数组为空。
let directoryTree = [];
let directoryList = new Promise((resolve, reject) => {
resolve(fs.readdir(path.join(__dirname, '..'), (err, fileList) => {
for (file of fileList) {
console.log(file);
directoryTree.push(file);
}
}));
}).then(() => console.log(directoryTree))
.catch((err) => console.log(error));
显示的是
[]
app
files
node_modules
package-lock.json
package.json
这向我表明 promise 在 readdir 完成执行之前得到解决,否则不会首先记录空数组。我相信当时我对 promise 的使用可能是不正确的,但我可能是错的。我很感激任何建议!
最佳答案
当回调完成异步获取数据时,您可以调用 resolve()
来解析 Promise。
然后,当数据获取并解析时,您将在then()
回调中获得文件列表:
new Promise((resolve, reject) => {
fs.readdir(path.join(__dirname, '..'), (err, fileList) => {
err ? reject(err) : resolve(fileList); //resolve with list of files
});
})
.then((list) => console.log(list))
.catch((err) => console.log(err));
关于javascript - 使用 Promises 和 readdir 来显示目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748422/