Skip to main content

Ahora es más fácil mover el trabajo pesado a subprocesos en segundo plano con los módulos de JavaScript en los trabajadores web.

JavaScript es de un solo subproceso, lo que significa que solo puede realizar una operación a la vez. Esto es intuitivo y funciona bien para muchos casos en la web, pero puede resultar problemático cuando necesitamos realizar tareas pesadas como procesamiento de datos, análisis sintáctico, cálculo o análisis. A medida que se entregan aplicaciones cada vez más complejas en la web, existe una mayor necesidad de procesamiento de subprocesos múltiples.

En la plataforma web, la primitiva principal para el enhebrado y el paralelismo es el API de trabajadores web. Los trabajadores son una abstracción ligera además de subprocesos del sistema operativo que exponen un mensaje que pasa API para la comunicación entre subprocesos. Esto puede ser inmensamente útil cuando se realizan cálculos costosos o se opera en grandes conjuntos de datos, lo que permite que el hilo principal se ejecute sin problemas mientras se realizan las costosas operaciones en uno o más hilos en segundo plano.

Aquí hay un ejemplo típico de uso de trabajador, donde un script de trabajador escucha mensajes del hilo principal y responde enviando mensajes propios:

page.js:

const worker = new Worker('worker.js');
worker.addEventListener(e => {
console.log(e.data);
});
worker.postMessage('hello');

worker.js:

addEventListener('message', e => {
if (e.data === 'hello') {
postMessage('world');
}
});

La API de Web Worker ha estado disponible en la mayoría de los navegadores durante más de diez años. Si bien eso significa que los trabajadores tienen un excelente soporte de navegador y están bien optimizados, también significa que son anteriores a los módulos de JavaScript. Dado que no existía un sistema de módulos cuando se diseñaron los trabajadores, la API para cargar código en un trabajador y componer scripts se ha mantenido similar a los enfoques de carga de scripts síncronos comunes en 2009.

Historia: trabajadores clásicos

El constructor Worker toma un guión clásico URL, que es relativa a la URL del documento. Inmediatamente devuelve una referencia a la nueva instancia de trabajador, que expone una interfaz de mensajería, así como una terminate() método que detiene y destruye inmediatamente al trabajador.

const worker = new Worker('worker.js');

A importScripts () La función está disponible dentro de los trabajadores web para cargar código adicional, pero detiene la ejecución del trabajador para buscar y evaluar cada script. También ejecuta scripts en el ámbito global como un clásico.

R Marketing Digital