javascript - 使用带有 readdir 的 Promises 来显示目录
问题描述
我知道有更好的方法可以做到这一点,并且诸如 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
这向我表明,在 readdir 完成执行之前,promise 正在解决,否则不会首先记录空数组。我相信那时我对承诺的使用可能不正确,但我可能是错的。我很感激任何建议!
解决方案
当回调完成异步获取数据时,您可以调用resolve()
来解决承诺。
然后,当获取并解析数据时,您将在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));
推荐阅读
- android - ListView 不显示带有 BaseAdapter 的 ImageButton
- c++ - 即使我与-ldl链接,Cmake对符号'dlsym@@GLIBC_2.2.5的未定义引用
- compilation - 使用外部库编译 Fortran 时,“无法打开模块文件,没有这样的文件或目录”
- python - 使用 PYODBC 将一定数量的参数传递给存储过程时出错
- python - 如何使用python将cmd中的命令输出传递给txt文件?
- r - 用数据框中的单词替换确切的字符串并匹配仅包含某个单词的字符串
- keras - 堆叠 2 个卷积层
- javascript - 在保持子顺序的同时对主行进行排序 - jquery
- javascript - 显示 2 张幻灯片时,光滑的轮播自适应高度不起作用
- javascript - eventListener 函数中的递归 setTimeout(鼓音序器)