我们目前正在开发一个 React Native 应用程序。我们从服务器获取一些数据,在将数据保存到本地数据库之前,必须对这些数据进行大量转换(我们使用的是 Realm(。
发生此转换时(10-20 秒(,应用无法响应任何导航或按钮按下。
应该使用什么方法来从JS线程卸载这项工作(或至少将其拆分为可管理的块(?
我们尝试搜索多线程解决方案,但是,它们似乎没有得到很好的支持或推荐。这让我们相信我们错过了一个关键的概念。
你熟悉 Web Workers 吗? 它们提供了一种在网页中运行 JavaScript 的线程外方法。
如果你搜索"React Native Web Workers",会出现一些在 React Native 中完成此操作的资源。 下面是一个利用 React Native 的 WebView 组件来提供 Web Worker 功能的示例。
另请参阅:在 React Native Android 应用程序中创建 Web Worker ,尽管它没有引用上面帖子中提到的简单 WebView 解决方案。
至少,你必须离开JS进行繁重的处理。这就是构建本机模块的目的。https://facebook.github.io/react-native/docs/native-modules-ios。像图像处理或多线程这样的东西,应该在C++或Swift中实现并导入。