You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用async/await仍返回Promise {<pending>}的原因咨询

为什么使用async/await后变量仍返回Promise {}?

你的代码:

const placeObjFunc = async () => {
      let placeObj = await getLongLat(parseStr.address);
      let lat = placeObj.lat;
      let lng = placeObj.lng;
      console.log("lat, lng: ", lat, lng, typeof lat);
      return [lat, lng];
    };
let lat_lng = placeObjFunc();

执行结果:

lat, lng:  31.7330889 131.1070626 number

原因解析:

  • async函数的本质:所有被async修饰的函数,无论内部有没有await,返回值都会被自动包装成Promise对象。哪怕你return的是普通数组[lat, lng],最终也会变成resolved状态的Promise,而非直接返回数组本身。
  • 调用方式的问题:直接执行placeObjFunc()时,没有用await或.then()等待Promise完成,所以变量lat_lng拿到的是处于pending状态的Promise,而非函数内部return的结果。

解决办法:

方法一:在async函数内用await接收

// 把调用逻辑放在另一个async函数里
const fetchLatLng = async () => {
  let lat_lng = await placeObjFunc();
  console.log(lat_lng); // 输出目标数组:[31.7330889, 131.1070626]
};
fetchLatLng();

方法二:用.then()处理Promise

placeObjFunc().then(lat_lng => {
  console.log(lat_lng); // 同样能拿到目标数组
});

内容的提问来源于stack exchange,提问作者stone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:10:24