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).
Constructor
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:
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
.
Véase también
- Usando Web Workers
- Funciones y clases disponibles para Web Workers
- Otro tipo de workers:
SharedWorker
y Service Worker. - Interfaz
OffscreenCanvas
.