【问题标题】:Does react-native support Multithreading and Background threading or Parallel Execution? How can we do that?react-native 是否支持多线程和后台线程或并行执行?我们怎么能做到这一点?
【发布时间】:2020-01-09 12:31:19
【问题描述】:

我浏览了react-native的官方文档和其他一些媒体资源和博客,我知道react中有UI ThreadJavaScript Thread -本国的。 Javascript 线程是逻辑将运行的线程,执行 javascript 代码、进行 API 调用、处理触摸事件等等。并且 UI Thread 会更新 UI。 如果 JavaScript 线程正在处理该进程,并且如果我们再次执行按钮操作或任何其他触摸事件,则需要一些时间来响应,在完成一个进程后,只有 UI 更新,直到我觉得它滞后或卡在某个地方。

例如

底部有一个标签导航器,它有四个标签,第一个标签有一个列表视图,第二个标签有显示多个点之间路线的地图视图

我在第一个选项卡中执行了一些按钮操作(单击列表视图中的按钮)并立即导航到第二个选项卡,感觉更新 UI 时有些滞后或需要一些时间(1-3 秒) 从第一个选项卡导航到第二个选项卡

在第二个选项卡中,如果我导航到任何其他选项卡,当此过程正在进行时,地图需要时间(5-10 秒)来获取多个点之间的路线,选项卡之间的导航不流畅且 UI 很多存在滞后。

我们如何让 react-native 应用更快地响应可触摸操作并减少 UI 延迟

是否有任何多线程后台线程的概念,我们可以在主线程中运行特定的逻辑并更新 UI 以使 react-native 应用程序响应更快而无需任何滞后。

【问题讨论】:

    标签: multithreading react-native ui-thread background-thread


    【解决方案1】:

    在 react-native 中不能使用线程,但你可以使用第三方包如react-native-bg-thread 进行性能优化

    【讨论】:

    • 不使用第三方库我们可以处理吗
    • 在 react native 中使用多个线程是不可能的,您必须使用本地代码在单独的线程中执行某些功能,否则您将不得不使用第三方包..
    【解决方案2】:

    React Native 使用 javascript,这是一种单线程语言,因此理论上不应该有使用多线程的方法。如果有东西阻塞了 js 线程,你应该将该代码移动到本机端,在 objective-c/swfit 和 java/kotlin 中实现它,这样你就可以在本机线程上运行它并防止 js 线程的锁定。无论如何,在 Reanimated 2 发布后,worklet apis 可以创建this library,它允许创建其他 js 线程来运行代码而不阻塞主线程

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      相关资源
      最近更新 更多