node.js - Node.js 函数异步返回不等待
问题描述
我想我在理解 Node.js 中的 await/promises 时遇到了问题,我以为我正确地实现了它,但它看起来不正确......
我有这个功能可以从我的 Google Drive 中获取文件列表:
const listFiles = async () => {
const filesList = await googleDrive.listFiles();
filesList.forEach((file)=>{
console.log(`File is ${file.name}`);
});
return filesList;
}
这个函数工作正常,但现在我尝试在我的 main.js 中这样调用它:
const listFiles = async () => {
const filesList = await googleDrive.listFiles();
filesList.forEach((file)=>{
console.log(`File is ${file.name} with id`);
});
return filesList;
}
const getFiles =() =>{
const files = listFiles();
console.log(files);
};
getFiles();
所以我的问题是,从getFiles()
我总是得到Promise { <pending> }
一个 console.log ......但是在我的....之后,我可以listFiles()
看到文件被正确打印。准备好并解决。await
await
filesList
我在这里做错了什么?
解决方案
async
函数返回一个承诺,所以你仍然需要await
它
返回值
一个 Promise,它将使用 async 函数返回的值来解决,或者被 async 函数抛出或未捕获的异常拒绝。
const listFiles = async () => {
const filesList = await googleDrive.listFiles();
filesList.forEach((file)=>{
console.log(`File is ${file.name} with id`);
});
return filesList;
}
const getFiles = async () =>{
const files = await listFiles();
console.log(files);
};
getFiles();
推荐阅读
- orleans - Orleans.NET 中的 IHttpClient 实现
- angular - 使用 Angular 自定义 Web 组件会引发错误:选择器“app-root”不匹配任何元素
- rust - 如何在 Rust 中将 SystemTime 转换为 ISO 8601?
- c - 从C中的字符串中删除非字母数字字符
- bluetooth - 在 yocto 构建的 defconfig 上“禁用”后,蓝牙仍然出现在启动列表中
- object - 如何从 obj 文件中删除除一种颜色之外的所有颜色
- javascript - 为什么 ChartJS 的这个 Tooltip 回调有效而这无效
- html - 如何升级整个网页,使其在 4K 显示器和高清显示器中看起来一样?
- c - IOCCC 1984/decot.c - 可以在 21 世纪编译吗?
- powerbi - 在过滤器中匹配文本条件时计算总和的问题