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 (en-US) 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() (en-US)

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() (en-US)

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 (en-US) no admiten este método.

Eventos

error (en-US)

Se activa cuando se produce un error en el worker.

message (en-US)

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

messageerror (en-US)

Se activa cuando un objeto Worker recibe un mensaje que no puede ser deserializado (en-US).

rejectionhandled (en-US)

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

unhandledrejection (en-US)

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() (en-US), 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 Standard
# dedicated-workers-and-the-worker-interface

Compatibilidad con navegadores

BCD tables only load in the browser

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 (en-US).

Véase también