我正在努力学习异步等待.在这段代码中-

const myFun = () => {
    let state = false;

    setTimeout(() => {state = true}, 2000);

    return new Promise((resolve, reject) => {
        setTimeout(() => {
            if(state) {
                resolve('State is true');
            } else {
                reject('State is false');
            }
        }, 3000);
    });
}

const getResult = async () => {
    return await myFun();
}

console.log(getResult());

为什么我的输出是-

Promise { <pending> }

而不是一些价值?getResult()函数不应该等待myFun()函数解析它的promise 值吗?

推荐答案

如果您使用的是async/await,那么所有调用都必须使用Promissions或async/await.你不能从同步调用中神奇地得到一个异步结果.

你的最后一个电话需要是:

getResult().then(response => console.log(response));

或者类似于:

(async () => console.log(await getResult()))()

Node.js相关问答推荐

nest js控制器方法调用两次

如何在Angular jest测试中调用Nodejs的垃圾收集? node v20的测试速度慢且内存泄漏

"sh:/usr/local/bin/node:当它存在于文件目录中时未找到

如何防止Socket-io实例化React/Next.js中的两个套接字(当前在服务器*和*客户端实例化)

Socket.io 未将用户加入给定房间

在 Docker 容器内创建一个 cron 作业(job)来执行 run.js 文件中的函数

yarn 安装失败,因为 node-gyp 正在寻找过时的 node 版本标头

如何在mongoose 聚合中执行全文搜索

我应该转译我的 TypeScript 应用程序吗?

结合后端(Express)和前端(Angular)路由

在 linux mint 上部署 node 应用程序的最简单方法是什么?

每秒从套接字传来的数据有哪些存储方式?

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

Mocha调用所有it回调模拟(测试中间件)

React Native:执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障

tsc:当我上传 React+next js 和 node 项目时,在 heroku 找不到

如何使用 superagent/supertest 链接 http 调用?

如何在 node 调试器中禁用第一行中断

构建 vue cli 后如何运行生产站点

如何判断 Node.js 中是否设置了环境变量?