首页 > 解决方案 > 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()看到文件被正确打印。准备好并解决。awaitawaitfilesList

我在这里做错了什么?

标签: node.jspromiseasync-await

解决方案


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();

推荐阅读