所以我基本上这样做(简化)......
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个Web工作者(然后控制器/委托者将10之间的特定任务划分为进一步处理 - 但这对于此问题并不重要那一刻)。
这一切都运行正常,但在检查了Chrome开发人员工具(网络)中的代码后,我发现Chrome确实创建了同一文件的10个单独版本(花费了额外的毫秒初始化 - 可以看到每个创建的其他文件的瀑布) ,即使它是同一个文件。
如果我将URL.createObjectURL(blob)
置于循环之外并进入一个单独的变量然后将该变量传递给循环中的工作者 - 它再也不能正常工作 - 似乎所有工作人员都会共享完全相同的JS文件(尽管我希望每个工作者都会启动自己独立的进程)。
有什么想法吗?我可以以某种方式创建URL.createObjectURL(blob)
一次然后以某种方式复制/克隆它吗?不确定这会有所帮助还是会有所不同?