После вызова close()
или terminate()
ваш работник фактически закрыт и должен быть недоступен.Вы можете создать нового работника, снова вызвав ww = new Worker("worker.js");
, но внутреннее состояние первого работника больше не будет доступно.
Теперь, если вам нужно приостановить работника, но держите его готовымдля перезапуска с его внутренним состоянием я бы рекомендовал просто переключить слушателей.Как то так:
function whenActive(event){
var functionName=e.data.action;
switch(functionName){
case 'stopWW':
self.removeEventListener("message", whenActive);
self.addEventListener("message", whenNotActive);
//do other stopping actions
break;
[...]//your other cases, but not "restartWW"
}
}
function whenNotActive(event){
var functionName=e.data.action;
if(functionName === 'reStartWW'){
self.addEventListener("message", whenActive);
self.removeEventListener("message", whenNotActive);
[...]//do other re-startup actions
}
}
//start the cycle
self.addEventListener("message", whenActive);