【发布时间】:2021-12-25 09:44:33
【问题描述】:
我在 iOS 模拟的 react-native 中遇到了一个非常奇怪的问题,以下异步函数在第一次构建后运行良好,如果我重新加载,那么等待函数似乎被冻结了。如果我删除了应用程序并重新构建,那么它将运行良好
const processPayment = async (amount: number) => {
console.log("start fetching")
const data = await new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ item: 10 })
}, 1000)
})
console.log(data)
console.log("end fetching")
}
重新加载前的控制台日志,可以运行多次
LOG start fetching
LOG {"item": 10}
LOG end fetching
重新加载后的控制台日志
LOG start fetching
调用函数
<TouchableOpacity onPress={() => {processPayment(100)}}>
<Text style={styles.keypad}>PAY</Text>
</TouchableOpacity
【问题讨论】:
-
能否也显示调用processPayment函数的代码
-
@adhinarayan 我已经更新了帖子上的调用流程
-
“重载”是真正的重载还是热重载?在热重载中,很多静态和异步函数都会出现问题。如果您从 Xcode 重新运行该应用程序,应该没问题。这对于最终的应用程序来说并不是一个真正的问题,因为它不会让热重载混淆所有内容。
-
@Christian by reload 表示我在地铁窗口上按了“r”。您将如何进行真正的重新加载?
-
@DanielNguyen 那我不知道
标签: react-native async-await es6-promise reload