[英]Node.js function async return not awaiting
我想我在理解 Node.js 中的等待/承諾時遇到問題,我以為我正確地實現了它,但它看起來不正確......
我有這個 function 從我的 Google Drive 中獲取文件列表:
const listFiles = async () => {
const filesList = await googleDrive.listFiles();
filesList.forEach((file)=>{
console.log(`File is ${file.name}`);
});
return filesList;
}
這個 function 工作正常,但現在我嘗試在我的 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
function 返回 promise ,所以你仍然需要await
它
返回值
一個 Promise 將使用異步 function 返回的值解析,或者被異步 function 拋出的異常或未捕獲的異常拒絕。
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();
listFiles
被正確列為async
,但在這種情況下, getFiles
也應該是 async - 它需要await
listFiles
的結果。
您的代碼應如下所示:
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.