workers threads importscripts google examples example end javascript html5 local-storage web-worker

javascript - threads - Accediendo a localStorage desde un webWorker



web workers examples (3)

Los trabajadores web solo tienen acceso a lo siguiente:

  • XMLHttpRequest
  • Caché de aplicación
  • crear otros trabajadores web
  • objeto navegador
  • objeto de ubicación
  • método setTimeout
  • método clearTimeout
  • método setInterval
  • método clearInterval
  • método importScripts
  • JSON
  • Obrero

No se puede acceder a la ventana o a los objetos principales desde un trabajador web, por lo que no puede acceder a localStorage.

Para comunicarse entre la ventana y el workerglobalscope puede usar la función postMessage() y el evento onmessage.

El acceso al DOM y la ventana no sería seguro para subprocesos, ya que el subproceso secundario tendría los mismos privilegios que su padre.

¿Puede un trabajador web acceder al almacenamiento local?

¿Si no, porque no? ¿Es problemático desde un punto de vista de seguridad?


No, localStorage y sessionStorage no están definidos en un proceso de trabajo web.

Tendría que postMessage() a llamar postMessage() al código de origen del Trabajador y hacer que ese código almacene los datos en localStorage.

Curiosamente, un trabajador web puede usar una llamada AJAX para enviar / recuperar información a / desde un servidor, de modo que puede abrir posibilidades, dependiendo de lo que esté intentando hacer.


Puede utilizar IndexedDB en WebWorkers que es una forma de almacenar cosas localmente en un almacén de valores clave. No es lo mismo que localStorage, pero tiene casos de uso similares y puede contener una gran cantidad de datos. Usamos IndexedDB en WebWorkers en mi trabajo.