У меня есть приложение React-Native, и я хочу использовать параллельное программирование (я хочу использовать все ядра планшета).
Я пробовал библиотеки paralleljs
и hamsters.js
но они не были полезны. Один не поддерживает RN, а другой имеет некоторые проблемы с Blobs на данный момент.
Поэтому я решил использовать веб-работников. После некоторого поиска на нем (из MDN и т.д.) Я понял, что вместо всех этих библиотек я могу использовать только веб-работников. Однако я не могу быть уверен в этом на 100%. Существуют и другие библиотеки, предназначенные для RN, например, рабочие-реагирующие, но у всех много проблем.
Мой вопрос заключается в том, как использовать чистый JS-код, чтобы использовать многопоточное и/или параллельное программирование в приложении React-Native? Или это еще не возможно?
Вы можете использовать WebView, который будет запускать JS в фоновом потоке. Потому что внутри webview это еще один экземпляр Webkit, поэтому JS, работающий в нем, вообще не блокирует пользовательский интерфейс приложения.
Прочтите этот блогпост для более подробной информации: https://medium.com/@inkdrop/a-simple-way-to-run-js-in-background-thread-on-react-native-8fff345576da
Чиновник говорит, что 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.
setTimeout
ниnew Promise
запускают код в новых потоках. Они оба работают только в главном потоке, но с разными приоритетами и используют прерывания событий.