Saltar al contenido

Acceda a localStorage desde el trabajador del servicio

Solución:

No puede acceder a localStorage (y también a sessionStorage) desde un proceso de webworker, el resultado será undefined, Esto es por razones de seguridad.

Necesitas usar postMessage() volver al código de origen del trabajador y hacer que ese código almacene los datos en localStorage.

Deberías usar localStorage.setItem() y localStorage.getItem() para guardar y obtener datos del almacenamiento local.

Más información:

Worker.postMessage ()

Window.localStorage

Pseudo código a continuación, con la esperanza de que le ayude a empezar:

 // include your worker
 var myWorker = new Worker('YourWorker.js'),
   data,
   changeData = function() {
     // save data to local storage
     localStorage.setItem('data', (new Date).getTime().toString());
     // get data from local storage
     data = localStorage.getItem('data');
     sendToWorker();
   },
   sendToWorker = function() {
     // send data to your worker
     myWorker.postMessage({
       data: data
     });
   };
 setInterval(changeData, 1000)

He estado usando este paquete llamado localforage que proporciona una interfaz similar a localStorage que envuelve IndexedDB. https://github.com/localForage/localForage

Luego puede importarlo colocándolo en su directorio público, para que sea servido por su servidor web, y luego llamando a: self.importScripts('localforage.js'); dentro de su trabajador de servicio.

https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers dice

Nota: localStorage funciona de manera similar a la caché del trabajador del servicio, pero es sincrónico, por lo que no está permitido en los trabajadores del servicio.

Nota: IndexedDB se puede utilizar dentro de un trabajador de servicios para el almacenamiento de datos si lo necesita.

También hay un poco de discusión aquí: ¿Cómo accedo al almacenamiento local usando trabajadores de servicio en angular?

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *