Ich habe einen Web-Worker erstellt, der große Daten verarbeitet. Folgende sind Code-Implementierung:So behandeln Sie mehrere Anforderungen an denselben Web Worker
worker.js
self.addEventListener('message', function(e) {
console.log('Message received from main script');
for(var i=0; i<999999999; i++){
// computation here
}
console.log('Posting message back to main script');
self.postMessage('You said: ' + e.data);
}, false);
Haupt Script
var myWorker;
if (window.Worker) {
if(typeof(w)=="undefined"){
myWorker = new Worker("scripts/controllers/workers.js");
}
}
myWorker.addEventListener('message', function(e) {
console.log('Message received from worker'+ e.data);
}, false);
function callWorker(someData){
myWorker.postMessage(someData);
}
callWorker(someData);//first time call - by user click
callWorker(someOtherData);//second time call - again user click (don't want to disable button)
in diesem Fall ich möchte nicht callWorker
mehrfach auszuführen. was ich will ist, wenn callWorker
wird derzeit ausgeführt und bedeuten, während eine zweite Anfrage für callWorker
auslösen, dann sollte die erste Anfrage beendet werden und zweite Anfrage sollte verarbeiten (neueste Anfrage sollte verarbeiten).
Wie kann ich das erreichen? Vielen Dank für Ihre Hilfe