Estoy creando una aplicación React Native/Expo y estoy usando un módulo de léxico ( https://github.com/peterolson/chinese-lexicon ) que obtiene algunos archivos grandes y realiza algunas transformaciones pesadas, por lo que tarda entre 10 y 15 segundos. cargar. Al cargar el módulo, toda la aplicación se congela.
Sé que no hay subprocesos múltiples en Javascript, pero tiene que haber una manera de hacer un procesamiento más pesado sin bloquear la interfaz de usuario, ¿verdad? ¿Dónde/cómo cargo este módulo sin que mi aplicación se congele?
Traté de editar el módulo y hacer que devuelva una Promesa que se resuelve tan pronto como se carga el Lexicon:
function load() { return new Promise((Resolve, reject) => { //All the code from the module //Calling Resolve with the loaded lexicon } } module.exports = { load } Ahora estoy cargando el léxico así: require('chinese-lexicon').load().then((lexicon) => { ... }); , sin embargo, todavía está bloqueando el subproceso principal, lo que tiene sentido, ya que la función ejecutora de Promise todavía se está ejecutando sincrónicamente.
También probé algunos trucos como usar setTimeout(() => { ... }, 0) en la función ejecutora de Promise, pero aún se bloquea.