可以从不同的 java 脚本文件中调用 worker.postmessage 和 worker.onmessage 来使用同一个 worker.js 吗?
Could worker.postmessage and worker.onmessage be called from inside different java script files, to use one worker.js?
我是Java脚本新手,最近学习了Web Workers,基本都是Java脚本中多线程的解决方案。在我找到的所有示例中,他们都在同一个 js 文件中使用了从 Web Worker 文件发布消息和接收响应消息。我的问题是,我可以在一个 java 脚本文件中开始执行 Web Worker,然后在单独的 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;
}
您可以将工作人员分配给全局变量并从任何脚本访问它
window.myWorker = new Worker('worker.js')
您可以使用
在其他脚本中访问
window.myWorker.postMessage('hi there')
或者,更好的是,您可以在模块中定义 worker
export const worker = new Worker('worker.js')
并在模块中导入它
<script type="module">
import { worker } from './worker-module.js'
worker.postMessage('hi there')
</script>
我是Java脚本新手,最近学习了Web Workers,基本都是Java脚本中多线程的解决方案。在我找到的所有示例中,他们都在同一个 js 文件中使用了从 Web Worker 文件发布消息和接收响应消息。我的问题是,我可以在一个 java 脚本文件中开始执行 Web Worker,然后在单独的 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;
}
您可以将工作人员分配给全局变量并从任何脚本访问它
window.myWorker = new Worker('worker.js')
您可以使用
在其他脚本中访问window.myWorker.postMessage('hi there')
或者,更好的是,您可以在模块中定义 worker
export const worker = new Worker('worker.js')
并在模块中导入它
<script type="module">
import { worker } from './worker-module.js'
worker.postMessage('hi there')
</script>