Могут ли worker.postmessage и worker.onmessage вызываться из разных файлов java-скриптов, чтобы использовать один worker.js? - PullRequest
0 голосов
/ 27 сентября 2018

Я новичок в Java-скрипте и недавно узнал о Web Workers, которые в основном являются решением для многопоточности в Java Script.Во всех примерах, которые я нашел, они использовали как отправку сообщения, так и получение ответного сообщения из файла веб-рабочего в одном и том же файле js.Мой вопрос заключается в том, могу ли я запустить выполнение веб-работника внутри одного файла сценария Java, а затем получить его результат в другом месте в отдельном файле сценария Java, как показано в примере ниже:

//start.js
  function startWebWorker()
  {  
    var message = "execute";
    var myWorker = new Worker("worker.js");

     myWorker.postMessage(message);
 }

 //worker.js
this.onmessage = function(e)
{
  if (e.data == "execute")
  var result ;
   result = doSomething();
  this.postMessage(result);

}

//receive.js

function processResult(){
var myWorker = new Worker("worker.js");  
   myWorker.onmessage = function(e)
   document.setElementById("myresult") = e.result;

 }

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете назначить работника глобальной переменной и получить к нему доступ из любого скрипта

window.myWorker = new Worker('worker.js')

К которому вы получите доступ в каком-либо другом скрипте с помощью

window.myWorker.postMessage('hi there')

Или, что еще лучше,Вы можете определить работника в модуле

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

и в модулях, импортировать его

<script type="module">
  import { worker } from './worker-module.js'
  worker.postMessage('hi there')
</script>
...