【发布时间】:2019-01-03 00:17:09
【问题描述】:
当 async/await 关键字阻止其他代码执行时,我遇到了问题
这是一个简单的例子:
storeToken = async (accessToken) => {
try {
await AsyncStorage.setItem(ACCESS_TOKEN, accessToken);
console.log('Access Token: ' + accessToken);
} catch (error) {
console.log('AsyncStorage error: ' + error.message);
}
}
storeToken - 将 accessToken 保存到 AsyncStorage 中,然后我尝试打印出访问令牌,仅用于测试目的。
console.log('Access Token: ' + accessToken); 没有执行,我在日志中看不到任何内容。
如果我在 await 之前放置 console.log(...) 行 - 它工作正常。
如果我要删除 async/await - 也可以。
我在 async/await 方面做错了吗?
【问题讨论】:
-
你不应该
await this.storeToken(accessToken);吗? (虽然不是说这是问题) -
我尝试使用 await for this.storeToken(accessToken);但这无济于事
-
正如我所说的,不是您在提供的代码中的问题,也无法知道
onLoginPressed是如何使用的,所以这可能不是问题 -
看来
AsyncStorage.setItem(ACCESS_TOKEN, accessToken);返回了一个永远不会解决或拒绝的承诺 -
如果你改为
storeToken = async (accessToken) => { consts ret = AsyncStorage.setItem(ACCESS_TOKEN, accessToken); console.log('Access Token: ' + accessToken); return ret; };会发生什么
标签: javascript react-native async-await