jsd*_*rio 5 react-native asyncstorage react-native-android
我正在使用redux-persistReact Native项目,该项目在除Android 7之外的许多设备上都能正常运行。我试图调试为什么我的本地存储不持久的问题,并发现了这一点:
以下代码在React Native组件生命周期内执行
componentDidMount() {
attachObservables(store)
setInterval(async () => {
console.log('Inside setInterval')
const data = await AsyncStorage.getAllKeys()
console.log('inside the getAllKeys')
data.forEach(async k => {
const value = await AsyncStorage.getItem(k)
console.group(k)
console.log(value)
console.groupEnd()
})
}, 3000)
}
Run Code Online (Sandbox Code Playgroud)
从不调用“ Inside setInterval”之后的代码。如果在setInterval之外,它将仅运行一次。如果我一次调用setInterval 之外的代码,它似乎可以正常运行。我也尝试过回调格式与异步/等待版本,但这似乎无关紧要。
我在使用firebase js库时遇到了同样的问题(在第一个回调之后永远不会返回回调)。我现在正在寻找替代方法来解决此问题。
有任何想法吗?
从某些 Android 版本中的 React Native 0.51 开始,运行时可能会被其他本机模块阻塞,从而阻碍上述方法的解析。
它可以通过https://github.com/facebook/react-native/issues/14101#issuecomment-345563563修复,确保此方法使用线程池中的空闲线程。
PR 已提交,希望能在未来版本中发布。如果您希望它立即使用此修复程序,可以在此处获取https://github.com/netbeast/react-native
编辑:我在react-native@0.53上的真实设备上不再遇到这种情况,无论如何其他人也报告了,所以问题仍然存在。
| 归档时间: |
|
| 查看次数: |
1869 次 |
| 最近记录: |