Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

125
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda