#react-native #async-await #es6-promise #reload
Вопрос:
Я столкнулся с действительно странной проблемой в react-native при моделировании iOS, следующая асинхронная функция работает нормально после первой сборки, если я перезагрузлюсь, то, похоже, функция ожидания была заморожена. Если я удалю приложение и восстановлю его снова, то оно будет работать нормально
const processPayment = async (amount: number) =gt; { console.log("start fetching") const data = await new Promise((resolve, reject) =gt; { setTimeout(() =gt; { resolve({ item: 10 }) }, 1000) }) console.log(data) console.log("end fetching") }
журнал консоли перед перезагрузкой может запускаться несколько раз
LOG start fetching LOG {"item": 10} LOG end fetching
журнал консоли после перезагрузки
LOG start fetching
Вызывающая функция
lt;TouchableOpacity onPress={() =gt; {processPayment(100)}}gt; lt;Text style={styles.keypad}gt;PAYlt;/Textgt; lt;/TouchableOpacity
Комментарии:
1. можете ли вы также показать код, в котором вы вызываете функцию processPayment
2. @adhinarayan Я обновил процесс вызова в посте
3. является ли «перезагрузка» реальной перезагрузкой или горячей перезагрузкой? При горячей перезагрузке возникает множество проблем со статическими и асинхронными функциями. Если вы повторно запустите приложение из Xcode, это не должно быть проблемой. На самом деле это не проблема для окончательного приложения, так как в нем не будет горячей перезагрузки, смешивающей все.
4. @Christian под перезагрузкой означает, что я нажал «r» в окне метро. Как бы вы сделали настоящую перезагрузку?
5. @DanielNguyen тогда я понятия не имею
Ответ №1:
Я использовал шаблон ignite react native и отключил компонент сборника рассказов, проблема, похоже, исчезла.
Комментарии:
1. Обобщите решение, описанное в ссылке. Ссылки могут стать недоступными позже