해결 방법 : setInterval은 브라우저의 백그라운드에서 정상적으로 실행할 수 없습니다.

참고

Worker

"웹 작업자"란 무엇입니까?

"Web Worker"는 웹 콘텐츠가 백그라운드 스레드에서 스크립트를 실행하는 간단한 방법을 제공합니다. 스레드는 사용자 인터페이스를 방해하지 않고 작업을 수행 할 수 있습니다. 또한 XMLHttpRequest를 사용하여 I / O를 수행 할 수 있습니다. 생성 된 작업자는 코드에 지정된 이벤트 핸들러에 메시지를 게시하여 메시지를 생성 한 JavaScript 코드로 메시지를 보낼 수 있습니다 (반대의 경우도 마찬가지).

명령

아래 샘플 코드에서 가장 간단한 타이머를 구현하고 100 밀리 초마다 트리거하도록합니다.

            var timmer = new Worker(
    URL.createObjectURL(
        new Blob(
            [
                "onmessage=function(event){setInterval(function(){postMessage(1);},100)}",
            ],
            { type: "application/javascript" }
        )
    )
);
timmer.onmessage = function (event) {
    console.log("get message");
};
timmer.postMessage("start");
        

표준 사용

위의 예에서는 createObjectURL을 사용하여 주소를 생성했는데 실행해야하는 코드가 비교적 간단하기 때문에이 방법이 더 간결합니다. 실행해야하는 작업의 코드가 더 복잡하면 작업을 독립적 인 js 파일로 별도로 작성할 수 있습니다. 자세한 내용은 다음 코드를 참조하십시오. 더 자세한 소개는 기사 상단의 참고 자료를 참조 할 수 있습니다.

            var timmer = new Worker('worker.js');