我創建了一個處理大量數據的web worker。下面是代碼實現:如何處理對同一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);
主要腳本
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)
在這種情況下,我不希望執行callWorker
多次。 我想要的是,如果callWorker
當前正在執行,並且意味着第二個請求提出callWorker
,那麼第一個請求應該終止,第二個請求應該處理(最近的請求應該處理)。
我該如何做到這一點?感謝您的幫助