使用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
相关产品推荐
相关产品推荐

