如何从Async函数返回值并声明为全局变量(React Native下不使用useState)
根本原因
所有标记了async的函数,默认返回值都是Promise实例,你直接调用不做Promise处理的话,拿到的永远是Promise对象而非内部返回的实际取值。
解决方案
方法1:在async函数内部调用时加await
如果你调用_getStorageValue的位置本身也在另一个async函数内,直接在调用前加await即可直接拿到实际值:
// 示例:在其他async方法中调用 async otherFunction() { const returnedValue = await _getStorageValue() // 此处可直接使用returnedValue作为实际取到的存储值 }
方法2:用.then()回调处理Promise返回值
如果调用位置不在async函数内,可以通过Promise的.then回调拿到返回值,直接在回调内部处理你的业务逻辑即可:
let returnedValue _getStorageValue().then(value => { returnedValue = value // 所有需要用到returnedValue的逻辑都要写在这个回调内部,或者调用对应的处理函数 })
注意:不要尝试在
.then回调外同步读取returnedValue的值,异步操作的执行顺序晚于同步代码,外部同步读取时Promise还没完成赋值,拿到的会是undefined。
内容的提问来源于stack exchange,提问作者Tegid Goodman-Jones
相关产品推荐
相关产品推荐

