Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

121
Vistas
Cómo llamar a una función externa dentro de un Web Worker

Estoy aprendiendo sobre Web Worker y hoy necesitaba hacer que una función externa funcione dentro de Web Worker como esta:

principal.js:

 function doSomething(parameter){ //Doing something } if (window.Worker) { const myWorker = new Worker("worker.js"); myWorker.postMessage("Hello World"); } else { console.log('Your browser doesn\'t support web workers.'); }

trabajador.js:

 onmessage = function(e) { doSomething(e.data) }

¿Tiene una manera de hacer este trabajo?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Todo lo que envíe a un trabajador web tiene que ser serializable . Como una función no lo es, no puede usar el patrón de devolución de llamada como probablemente le gustaría hacer.

La única solución es enviar un mensaje al hilo principal tal como lo hizo con postMessage , y el hilo principal tiene que reconocer ese mensaje con el detector de eventos de message y ejecutar la función doSomething por sí mismo.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Es un poco complicado, pero dependiendo de su caso de uso, puede hacer algo como lo siguiente:

 // main.js const doSomething = (param) => { return param + '!!!' } const worker = new Worker("worker.js") worker.postMessage({ fn: doSomething.toString(), param: "Hello World", }) worker.onmessage = (e) => { console.log(e.data) // logs "Hello World!!!" } // worker.js: self.onmessage = (e) => { const { fn, param } = e.data const result = eval(`(${fn})`)(param) self.postMessage(result) }

Tenga en cuenta que generalmente es mejor evitar eval , pero puede ser seguro aquí siempre que doSomething sea un código confiable.

Tenga en cuenta también que esto fallará si doSomething se basa en dependencias externas a sí mismo; todas esas dependencias deberán ser serializables y pasarse explícitamente como parámetros, a través del mismo mecanismo postMessage .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda