JavaScript async函数返回[object Promise]问题求助
Async函数返回[object Promise]的原因及解决方法
问题本质
所有async函数的返回值都会被自动包装成Promise对象,哪怕你return的是普通值(比如你的serverRes)。你看到的[object Promise]就是这个特性导致的,函数内部逻辑没问题(从控制台能打印正确响应就能证明)。
解决方法
要获取Promise内部的实际结果,必须用以下两种方式处理:
方式1:用await调用(需在async环境中)
await只能在async函数内部使用,全局作用域调用可使用立即执行async函数:
// 全局作用域或非async函数中使用立即执行async函数 (async () => { let result = await getresult(input); console.log(result); // 输出 {text: 'hello!'} })(); // 如果本身就在async函数里,直接用await async function someOtherFunc() { let result = await getresult(input); // 处理result... }
方式2:用.then()链式调用
这是处理Promise的通用方式,无需依赖async环境:
getresult(input).then(result => { console.log(result); // 输出 {text: 'hello!'} // 处理result... });
补充说明
你之前的代码let result = getresult(input);只是拿到了async函数返回的Promise实例,并没有获取到它最终resolve的值。只有通过await或.then(),才能提取出Promise内部的实际响应数据。
内容的提问来源于stack exchange,提问作者emss
相关产品推荐
相关产品推荐

