【发布时间】:2020-07-09 16:42:57
【问题描述】:
问题
我在访问由 Async/Await 函数返回的 Promise{} 对象中包含的数据数组时遇到问题。
我知道 Async/Await 是 Promises 的包装器,因此它总是会返回一个 Promise。我只是无法获取里面的数据。
我对此进行了广泛的研究,甚至没有看到关于我所看到的输出类型的参考。
代码
这是一个图像目录的内容:
outside3.jpg
outside2.png
outside1.jpg
matt.png
truck.png
假设我正在尝试获取目录中包含的项目列表。
const fs = require('fs');
/* The files are here */
const imgPath = "../public/images/client/carousel2/"
const getFileList = async (filePath)=>{
let fileList = [];
const dir = await fs.promises.opendir(filePath);
for await (const dirent of dir) {
fileList.push(dirent.name)
}
return fileList
}
let fileNames = getFileList(imgPath)
setTimeout(()=>{
console.log(fileNames)
}, 500);
输出
当我运行它时,我得到以下输出:
Promise {
[
'outside3.jpg',
'outside2.png',
'outside1.jpg',
'matt.png',
'truck.png'
]
}
问题
虽然可能有更好的方法来获取目录的内容,但我的问题更多地与 Async/Await 函数返回的 Promise 对象有关。
鉴于输出,我如何从 Promise 对象中提取数组?
或者,如果这是一个错误的问题,我该如何只返回一个数组?
【问题讨论】:
标签: node.js ecmascript-6 async-await