Worker

La interfaz Worker de la API de Web Workers representa una tarea en segundo plano que se puede crear a través de un script, que puede enviar mensajes a su creador.

La creación de un worker se realiza llamando al constructor Worker("path/to/worker/script").

Los workers pueden generar nuevos workers, siempre y cuando esos workers estén alojados en el mismo origen que la página principal. (Nota: los trabajadores anidados aún no están implementados en WebKit).

No todas las interfaces y funciones están disponibles para scripts dentro de un Worker. Los workers pueden usar XMLHttpRequest para la comunicación de red, pero sus atributos responseXML y channel son siempre null. (fetch también está disponible, sin tales restricciones).

EventTarget Worker

Constructor

Worker()

Crea un worker web dedicado que ejecuta el script en la URL especificada. Esto también funciona para Blob URLs.

Propiedades de instancia

Hereda las propiedades de su padre, EventTarget.

Métodos de instancia

Hereda los métodos de su padre, EventTarget.

Worker.postMessage()

Envía un mensaje, que consta de cualquier objeto de JavaScript, al ámbito interno del worker.

Worker.terminate()

Termina inmediatamente el worker. Esto no permite que el worker finalice sus operaciones; se detiene de una vez. Las instancias de ServiceWorker no admiten este método.

Eventos

error

Se activa cuando se produce un error en el worker.

message

Se activa cuando el padre del worker recibe un mensaje de ese worker.

messageerror

Se activa cuando un objeto Worker recibe un mensaje que no puede ser deserializado.

rejectionhandled

Se activa cada vez que se rechaza una Promesa, independientemente de si hay o no un controlador para capturar el rechazo.

unhandledrejection

Se activa cuando una Promesa se rechaza sin un controlador para detectar el rechazo.

Ejemplo

El siguiente fragmento de código crea un objeto Worker usando el constructor Worker(), luego usa el objeto worker:

js
const myWorker = new Worker("/worker.js");
const first = document.querySelector("input#number1");
const second = document.querySelector("input#number2");

first.onchange = () => {
  myWorker.postMessage([first.value, second.value]);
  console.log("Mensaje enviado al worker");
};

Para ver un ejemplo completo, consulte nuestro Ejemplo básico de un worker dedicado (ejecutar worker dedicado).

Especificaciones

Specification
HTML
# dedicated-workers-and-the-worker-interface

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Worker
Worker() constructor
Support for ECMAScript modules
Strict MIME type checks for worker scripts
options.name parameter
options.type parameter
error event
message event
messageerror event
postMessage
options.includeUserActivation parameter
Non-standard
terminate
Available in workers

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Non-standard. Check cross-browser support before using.
See implementation notes.
Has more compatibility info.

El apoyo varía para los diferentes tipos de workers. Consulte la página de cada tipo de trabajador para obtener información específica.

Comportamiento de error del worker de origen cruzado

En las primeras versiones de la especificación, la carga de un script de worker de origen cruzado generaba un SecurityError. Hoy en día, en su lugar, se lanza un evento error.

Véase también