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

为何调用async函数ca时console.log输出[object Object]?如何获取真实值?

问题解决方法

原因分析

ca是异步函数,所有异步函数默认返回Promise对象,直接和字符串拼接时,Promise对象会被转换为[object Object]。而alert(data)能显示真实值,是因为ca内部通过await拿到了异步操作的实际结果,但ca本身的返回值仍是Promise。

另外,原代码中直接调用_storeData后立刻执行ca,可能出现“存储未完成就读取”的情况,导致拿到旧值或null,这也是需要注意的问题。


解决方案

方案1:将PaymentScreen改为异步函数,用await获取真实值

async function PaymentScreen({route, navigation}) {
  const {it} = route.params;
  const nameToStore = it.name.first;
  // 先等待存储操作完成,避免读取到无效值
  await _storeData(nameToStore);
  // 用await获取ca函数的实际返回值
  const realValue = await ca(nameToStore);
  console.log('<>><<>><<>>' + realValue);
  // ...其他业务代码
}

方案2:用Promise的.then()方法处理结果

function PaymentScreen({route, navigation}) {
  const {it} = route.params;
  const nameToStore = it.name.first;
  // 先等待存储完成,再执行读取操作
  _storeData(nameToStore).then(() => {
    ca(nameToStore).then(realValue => {
      console.log('<>><<>><<>>' + realValue);
    });
  });
  // ...其他业务代码
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:21:04