[javascript] worker 샘플 코드

/// worker 처리
var chkModeWorker = new Worker('js/worker_chk_mode.js');
chkModeWorker.postMessage({
      "url": "/jsonData/chk_mode.php"}
);
chkModeWorker.onmessage = function (e) {
      if (e.data == null) {
            console.warn("점검모드 확인을 실패했습니다.");
      } else {
            if(e.data.chk*1 > 0){
                  // 점검모드 처리
                  $(".headerBox").addClass("chkMod");
            }else{
                  // 점검모드 해제 처리
                  $(".headerBox").removeClass("chkMod");
            }
      }
}
chkModeWorker.onerror = function (e) {   
      console.warn("점검모드 확인을 실패했습니다.");
}
/// worker 본 파일
let lastStateText;

function ajaxChkModeLoad(url) {
      fetch(url, {
            method: "GET",
      }).catch(function(error){
            // 에러 검출
            console.log('Request failed. ' + error);
      }).then(response =>
            // 데이터 텍스트화
            response.text()
      ).then(response => {
            // 기존 데이터와 같을 경우 스킵
            if(lastStateText !== response){
                  lastStateText = response;

                  // 텍스트 리턴
                  postMessage({
                        "chk": lastStateText
                  });        
            }     

            // 폴링 처리
            setTimeout(() => {
                  ajaxChkModeLoad(url);
            }, 3000); 
      })
}

// 첫 실행시 처리
onmessage = function (event) {
      ajaxChkModeLoad(event.data.url);
}

Leave a Comment