Im cercando di creare lavoratori web e inviare messaggi a loro in ciclo:Esiste un limite per i lavoratori di Firefox?
array.forEach(function (data) {
this.createWorker();
this.workers[this.workersPointer].postMessage({task: 'someTask', data: string});
}, this);
funzione createWorker: codice
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
});
}, false);
Funziona perfettamente in Google Chrome. Quando sto cercando di eseguirlo in Firefox, funziona solo 20 volte. I web worker di Firefox hanno un limite? Non riesco a trovare informazioni su di esso su mozilla.org. Se non c'è limite, qual è il problema? Qualche idea?
semplicemente mi chiedo, perché non ho trovato nulla in Google con la query "limite di Firefox Web Workers" ... E perché non ci sono messaggi di errore in Firefox e Chrome. –
Ecco un bug chromium inviare: http://code.google.com/p/chromium/issues/detail?id=37518 – Alex
Non c'è nessun messaggio di errore perché se si creano più lavoratori del limite vengono semplicemente messi in coda per correre. Il limite è per i lavoratori in esecuzione contemporaneamente, non per i lavoratori totali. Se stavi installando dei lavoratori che in realtà sono terminati, vedresti iniziare quelli in coda. Ma stai cercando di creare 200 lavoratori tutti con una durata infinita ... –