为何调用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
相关产品推荐
相关产品推荐

