Mic*_*ael 6 html javascript web-worker html5-filesystem
所以我基本上是这样做的(简化的)......
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));
}
Run Code Online (Sandbox Code Playgroud)
...动态创建同一个 JS 文件的 10 个实例并将其传递给 10 个 Web Workers(然后控制器/委托者在 10 个任务之间划分特定任务以进行进一步处理 - 但这对于目前这个问题并不重要) 。
这一切都工作正常,但在检查 Chrome 开发人员工具(网络)中的代码后,我发现 Chrome 确实创建了同一文件的 10 个单独版本(花费额外的初始化毫秒数 - 可以看到创建的每个附加文件的瀑布)它是同一个文件。
如果我URL.createObjectURL(blob)在循环之外进入一个单独的变量,然后将该变量传递给循环中的工作人员 - 它不再正常工作 - 似乎所有工作人员都共享完全相同的 JS 文件(即使我希望每个工人都会启动自己单独的进程)。
有任何想法吗?我可以以某种方式URL.createObjectURL(blob)只创建一次,然后以某种方式复制/克隆它吗?不确定这是否会有所帮助或使事情有所不同?