Does a Firefox Workers limit exist?

后端 未结 4 1890
遇见更好的自我
遇见更好的自我 2020-12-18 04:47

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

array.forEach(function (data) {
        this.createWorker();
        this.workers[this.wo         


        
4条回答
  •  天涯浪人
    2020-12-18 05:39

    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.

提交回复
热议问题