He agregado un trabajador web para enviar el tiempo de cuenta regresiva cada segundo. Lo estoy usando para causar un tiempo de espera en mi aplicación.
export default () => { self.onmessage = (e) => { var time = e.data; var interval = setInterval(function () { if (time > 0) { time = time - 1000; postMessage(time); } else if (time == 0) { clearInterval(interval); postMessage(time); } }, 1000); }; };en mi aplicación:
useEffect(() => { if (time > 0) { instance.postMessage(time); } return () => { instance.postMessage(0); instance.terminate(); }; }, [time]); instance.onmessage = (msg) => { if (msg.data > 0) { // app state update } else if (msg.data == 0) { // app timeout logic instance.postMessage('stop'); instance.terminate(); }Pero en Chrome después de unos minutos obtengo el código de error: STATUS_BREAKPOINT. ¿Puede alguien ayudarme a solucionar este problema?
El mismo código funciona bien en el navegador Firefox.
Así que tuve el mismo problema, hubo un uso excesivo de CPU y memoria que provocó un bloqueo, y al quitar el trabajador y configurar un temporizador con setInterval en su lugar resolvió el problema
Nota: verifique dónde está declarando su Worker, o dónde lo inicia en el componente, porque tal vez haga que cree una nueva instancia en cada nueva representación del componente, lo que lleva a una pérdida de memoria