3

所以我基本上是在做这个(简化)......

var script = '...some JS code...',
    blob = blob = new Blob([script]),
    worker = [];

for (var i=0; i<10; i++) {
    worker[i] = new Worker(URL.createObjectURL(blob));
}

...动态创建同一个 JS 文件的 10 个实例并将其传递给 10 个网络工作者(然后控制器/委托人在 10 个之间划分特定任务以进行进一步处理 - 但这对于这个问题目前并不重要) .

这一切都很好,但是在检查 Chrome 开发人员工具(网络)中的代码后,我发现 Chrome 确实创建了同一文件的 10 个单独版本(需要额外的初始化毫秒数 - 可以看到创建的每个额外文件的瀑布),即使它是同一个文件。

如果我URL.createObjectURL(blob)在循环之外进入一个单独的变量,然后将该变量传递给循环中的工作人员 - 它不再正常工作 - 似乎所有工作人员都共享完全相同的 JS 文件(即使我'希望每个工人都会启动自己的单独进程)。

有任何想法吗?我可以以某种方式URL.createObjectURL(blob)只创建一次然后以某种方式复制/克隆它吗?不确定这是否会有所帮助或使事情有所不同?

4

0 回答 0