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

async函数内部返回值正确,外部获取值不符的技术咨询

问题原因及解决方案

第一个代码块的问题

所有async函数执行后都会返回一个Promise对象,而非函数内部return的实际值。你直接用let value = getValueFor('Key')赋值,value其实是未完成的Promise,所以console.log会输出对象;而函数内部的result是通过await等待异步操作完成后拿到的实际结果,因此输出正确。

第二个代码块的问题

JavaScript是单线程异步模型,同步代码会优先执行。console.log('value is ' + value)是同步代码,会在getValueFor('Key').then(...)的回调函数前运行——此时异步操作还没完成,value还是初始的'test',所以输出不会更新。

两种正确写法

  1. 用await获取结果(需在async函数内执行):
async function logValue() {
  let value = await getValueFor('Key');
  console.log('value is ' + value);
}
logValue();
  1. 在then回调内执行输出:
getValueFor('Key').then(data => {
  console.log('value is ' + data);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:50:01