Deno:v1.19.0
Deno文件参考:Deno手册,第章。3.6工人
MDN Web文档:Javascript:使用Web Workers
根据以上Deno文档,支持Web Workers API。从这个API的抽象类派生的类型是Worker、SharedWorker和ServiceWorker,可以在MDN Web Docs链接中看到。"敬业的工人"似乎得到了实施。
有了敬业的员工,一切似乎都很顺利。
workerList[i] = new Worker(new URL(authJson.workers[i].projectFile, import.meta.url).href, { type: "module", deno: { namespace: true, }});
对于SharedWorker,会发生错误:ReferenceError:SharedWorker未定义
workerList[i] = new SharedWorker(new URL(authJson.workers[i].projectFile, import.meta.url).href, { type: "module", deno: { namespace: true, }});
我过去看到Deno说有些事情得到了支持,但没有说它只得到了部分支持。使用postMessage传递共享内存阵列的示例,应该只在最近使用1.9.0。
可能是Deno不支持Web Worker API,只是有一个Worker实现,而没有SharedWorker,或者使用Deno文档中没有的上述SharedWorker有什么需要了解的吗?
如果答案是共享工人还不受支持,那么请你在哪里找到这样的信息,因为我已经阅读了完整的Deno Worker API,虽然它指的是MDN Web文档,但除非我错了,否则在他们的文档中,不要说他们不完全支持他们所指的Deno支持的API。
附言:在有人问之前。。。你为什么需要…:(
共享工人:表示可以从多个浏览上下文访问的特定类型的工作程序,这些上下文是多个窗口、iframe,甚至是工作程序。
因此,共享工作线程可以与其他工作线程交换消息,而不仅仅是创建它们的单个父线程。它们有一个MessagePort对象。
Worker API中的SharedWorkers未在Deno中实现,只有Dedidcated Workers实现。
根据这个问题7728讨论SharedWorkers要求结构化克隆可用。
根据这一讨论,结构化克隆工作已经进行了一段时间。
自Deno 1.9.0以来,使用postMessage在线程之间传递SMA才刚刚可用。传递MessagePort对象(SharedWorkers中需要(可能是基于这种能力(推测(。
然而,SharedWorker类型已经在Deno代码中声明。
如果有人可以添加更多关于SharedWorkers可用性的信息,请分享。它们在多线程编程、模块化和平滑处理方面非常有用。