Firefox的工作人员限制是否存在? [英] Does a Firefox Workers limit exist?

查看:124
本文介绍了Firefox的工作人员限制是否存在?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  array.forEach(function(data){信范读方范秘范信息方范范范范now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now now nowishes now now now now now now now now now now now now now now now now now now now now now now now now 54范范范范读能信范

createWorker函数:

  createWorker:function(){
this.workersPointer ++;
var worker = this.workers [this.workersPointer] = new Worker('Worker.js'),
storage = this;资读的信息亦信息的信息预读范范亦读亦亦作范上作内叙
}
else {
storage [event.data.task +'Callback'](event.data.data);
}
};
worker.onerror = function(error){
storage.workerErrback(error);
};



$ b $ p

$ b $ p $ self.addEventListener('message',function(event){
self.postMessage({
data:data,
error:err,
任务:event.data.task
});

},false) ;



它可以在Google Chrome中完美运行。当我试图在Firefox中运行它时,它只能运行20次。 Firefox网络工作者是否有限制?我在mozilla.org上找不到关于它的信息。如果没有限制,那有什么问题?任何想法?

解决方案

刚做了一些我自己的测试。为此,我改变了一下代码:

循环:

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

createWorker函数:

  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);
};

$ / code>

工人:

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

在我运行这个之后,在chrome中我得到了66个cookie(包括一个漂亮的蓝色崩溃窗口) firefox我得到了20.所以这两个浏览器似乎有工人的限制。
$ b $编辑:
$ b $在Opera中我得到一个控制台消息:

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


Im trying to create web Workers and post messages to them in cycle:

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

createWorker function:

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 code:

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

}, false);

It works perfectly in Google Chrome. When I'm trying to run it in Firefox, it works only 20 times. Do Firefox web workers have a limit? I can't find information about it on mozilla.org. If there is no limit, what's the problem? Any ideas?

解决方案

Just did some test of my own. For this, i changed the code a little bit:

Cycle:

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

createWorker function:

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});
};

After i run this, in chrome i got 66 cookies (including a nice blue crash window), in firefox i got 20. So both browsers seem to have worker limitations.

EDIT:

In Opera i get a console message:

Maximum number of Web Worker instances(16) exceeded for this window.

这篇关于Firefox的工作人员限制是否存在?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆