参考链接: https://www.w3cschool.cn/nwfchn/9jvrmozt.html
参考链接: https://blog.csdn.net/qq_28387069/article/details/112316133
参考链接: https://blog.csdn.net/weixin_32067105/article/details/112672917
参考链接: https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers
一.Worker
Web Worker 为 Web 内容在后台线程中运行脚本提供了一种简单的方法。线程可以执行任务而不干扰用户界面。此外,他们可以使用XMLHttpRequest执行 I/O (尽管responseXML和channel属性总是为空)。一旦创建, 一个 worker 可以将消息发送到创建它的 JavaScript 代码,通过将消息发布到该代码指定的事件处理程序(反之亦然)。
一个 worker 是使用一个构造函数创建的一个对象 (e.g. Worker()) 运行一个命名的 JavaScript 文件 - 这个文件包含将在工作线程中运行的代码; workers 运行在另一个全局上下文中,不同于当前的window. 因此,在 Worker 内通过 window获取全局作用域 (而不是self) 将返回错误。
在专用 workers 的情况下,DedicatedWorkerGlobalScope 对象代表了 worker 的上下文(专用 workers 是指标准 worker 仅在单一脚本中被使用;共享 worker 的上下文是SharedWorkerGlobalScope (en-US)对象)。一个专用 worker 仅仅能被首次生成它的脚本使用,而共享 worker 可以同时被多个脚本使用。
使用
新建一个脚本用来调用Worker
mainThread.ts
let Worker = new Worker("Worker.js");
Worker.onmessage = function(e){
//接收worker线程发过来的消息
}
Worker.postMessage("Main Thread to Worker");//向worker线程发送消息
这个Worker.js文件必须放在Cocoscreator编辑器的目录下面,不然会找不到。路径如下:
C:\CocosDashboard_1.0.20\resources.editors\Creator\2.4.9\ resources\static\preview-templates
接下来是Worker.js部分
Worker.js
self.onmessage = function(e){
//接收创建当前worker的线程发过来的消息
}
self.postMessage("Worker Thread to Main Thread")// 向创建当前worker的线程发送消息
以上步骤就实现了Cocoscreator中主线程与Worker线程通信的功能了