在我的网络应用程序中,我经常需要重新实例化 Worker 对象,因为无法将新脚本传递给旧的现有对象。一段时间后,一些浏览器开始阻止创建新的 Worker 对象,因为它们达到了一个窗口的 Worker 限制。我试图在创建新对象之前删除已完成的工作对象,但显然我做错了。这是一个简单的测试,在 opera 中失败(限制为每个窗口 256 个工作人员):
var worker;
for(var i = 0; i < 300; i++) {
for (var key in worker) worker[key] = null;
delete worker.onmessage;
delete worker.onerror;
delete worker;
worker = new Worker("script.js");
}
我的问题是如何完全删除一个工作对象,以便永远不会达到浏览器限制?谢谢!