我有一个React-Native应用程序,我想使用并行编程(我想使用平板电脑的所有内核)。
我尝试了paralleljs
和hamsters.js
个库,但它们没用。一个人不支持RN,另一个人目前在Blob方面存在一些问题。
所以,我决定使用网络工作者。在对它进行了一些搜索之后(来自MDN等),我意识到我可能只使用Web worker而不是所有这些库。但是我无法100%肯定它。还有其他为RN设计的库,比如反应本地工作者,但都有很多问题。
我的问题是如何使用纯JS代码在React-Native应用程序中使用多线程和/或并行编程?或者它不可能吗?
答案 0 :(得分:0)
您可以使用将在后台线程中运行JS的WebView。 因为在webview中,它是Webkit的另一个实例,所以在其中运行的JS根本不会阻止应用程序UI。
阅读此博文了解更多详情:https://medium.com/@inkdrop/a-simple-way-to-run-js-in-background-thread-on-react-native-8fff345576da
答案 1 :(得分:-1)
该官员表示,React Native可以实现某种本机模块桥接,以便利用高级扩展。我不确定你想通过多线程和/或并行编程实现什么,但是使用纯JavaScript,你可以做类似的事情。
例如,这是一种使用JavaScript的并行编程。
setTimeout(() => {
// One time-consuming logics
});
setTimeout(() => {
// Another time-consuming logics
});
您也可以使用Promise。它还为我们提供了轻松处理并行编程的方法(https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)
但是,如果您想要读取多线程,那就不容易了。您必须编写自己的扩展代码,该代码桥接本机代码和React Native。当然,这实际上不再是纯粹的JS,但这是React Native的优势。您可以创建自己的扩展以在JavaScript中使用本机模块。