gpt4 book ai didi

javascript - 是否存在 Firefox Workers 限制?

转载 作者:数据小太阳 更新时间:2023-10-29 05:04:37 24 4
gpt4 key购买 nike

我正在尝试创建 web Worker 并循环向它们发送消息:

array.forEach(function (data) {
this.createWorker();
this.workers[this.workersPointer].postMessage({task: 'someTask', data: string});
}, this);

创建 worker 函数:

createWorker: function () {
this.workersPointer++;
var worker = this.workers[this.workersPointer] = new Worker('Worker.js'),
storage = this;
worker.onmessage = function (event) {
if (event.data.error) {
storage[event.data.task + 'Errback'](event.data.error);
}
else {
storage[event.data.task + 'Callback'](event.data.data);
}
};
worker.onerror = function (error) {
storage.workerErrback(error);
};
}

worker 代码:

self.addEventListener('message', function (event) {
self.postMessage({
data: data,
error: err,
task: event.data.task
});

}, 假);

它在谷歌浏览器中完美运行。当我尝试在 Firefox 中运行它时,它只运行了 20 次。 Firefox 网络 worker 有限制吗?我在 mozilla.org 上找不到有关它的信息。如果没有限制,问题是什么?有什么想法吗?

最佳答案

我自己做了一些测试。为此,我稍微更改了代码:

循环:

for(var i=0;i<200;i++){
this.createWorker();
this.workers[this.workersPointer].postMessage({task: 'someTask', number:i});
};

创建 worker 函数:

this.workers =[];
this.workersPointer = 0;
storage=[];


var createWorker= function () {
workersPointer++;
var myPointer = workersPointer;
var worker = this.workers[this.workersPointer] = new Worker('Worker.js');

worker.onmessage = function (event) {
if (event.data.error) {
alert(event.data.error);
}
else {
document.cookie=event.data.task+"["+myPointer+"]="+event.data.number;
}
};
worker.onerror = function (event) {
alert("Error: " + event.error);
};
}

worker :

onmessage = function(event) {
postMessage({number:event.data.number*2, task: event.data.task});
};

在我运行这个之后,在 chrome 中我得到了 66 个 cookie(包括一个漂亮的蓝色崩溃窗口),在 firefox 中我得到了 20 个。所以这两种浏览器似乎都有工作限制。

编辑:

在 Opera 中,我收到一条控制台消息:

此窗口超出了 Web Worker 实例的最大数量 (16)。

关于javascript - 是否存在 Firefox Workers 限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com