programing

자바스크립트에서 주기적으로 함수를 호출하는 방법이 있습니까?

lovejava 2023. 10. 31. 20:14

자바스크립트에서 주기적으로 함수를 호출하는 방법이 있습니까?

자바스크립트에서 주기적으로 함수를 호출하는 방법이 있습니까?

setInterval()함수를 반복적으로 호출하거나 코드 스니펫을 실행하며 각 호출 사이에 시간 지연이 고정됩니다.간격을 고유하게 식별하는 간격 ID를 반환하므로 나중에 clear를 호출하여 제거할 수 있습니다.간격().

var intervalId = setInterval(function() {
  alert("Interval reached every 5s")
}, 5000);

// You can clear a periodic function by uncommenting:
// clearInterval(intervalId);

@ setInterval() @ MDN문서 더 보기

그 세트를 참고하세요.인터벌()은 주기적인 실행을 위한 최선의 해결책이 아닌 경우가 많습니다. 실제로 주기적으로 호출하는 자바스크립트에 따라 다릅니다.

예를 들어 1000ms 주기의 setInterval()을 사용하고 주기 함수에서 때때로 반환에 2초가 걸리는 아약스 호출을 수행하면 첫 번째 응답이 돌아오기 전에 다른 아약스 호출을 수행하게 됩니다.이것은 보통 바람직하지 않습니다.

많은 라이브러리에는 Nelson이 제공한 프로토타입 예제와 같이 setIntervaly를 사용할 때 발생하는 위험을 방지하는 주기적인 방법이 있습니다.

jQuery ajax 호출이 포함된 함수를 사용하여 보다 강력한 주기적 실행을 달성하려면 다음과 같은 것을 생각해 보십시오.

function myPeriodicMethod() {
  $.ajax({
    url: ..., 
    success: function(data) {
      ...
    },
    complete: function() {
      // schedule the next request *only* when the current one is complete:
      setTimeout(myPeriodicMethod, 1000);
    }
  });
}

// schedule the first invocation:
setTimeout(myPeriodicMethod, 1000);

다른 접근 방식은 setTimeout을 사용하지만 변수에서 경과된 시간을 추적한 다음 각 호출에 대한 타임아웃 지연을 동적으로 설정하여 원하는 간격에 최대한 가깝지만 응답을 다시 얻을 수 있는 것보다 빠르지 않은 기능을 실행하는 것입니다.

모든 사용자에게 시간 초과/세트가 설정되어 있습니다.인터벌 솔루션이 이미 있습니다.문자열만이 아닌 Interval을 설정할 수 있도록 함수를 전달할 수 있다는 점에 유의할 필요가 있다고 생각합니다.실제 함수에 "평가"될 문자열 대신 실제 함수를 전달하는 것이 실제로는 조금 더 안전할 수 있습니다.

// example 1
function test() {
  alert('called');
}
var interval = setInterval(test, 10000);

또는:

// example 2
var counter = 0;
var interval = setInterval(function() { alert("#"+counter++); }, 5000);

오래된 질문이지만..주기적인 작업 수행자가 필요했고 TaskTimer를 작성했습니다.여러 태스크를 서로 다른 간격으로 실행해야 할 경우에도 유용합니다.

// Timer with 1000ms (1 second) base interval resolution.
const timer = new TaskTimer(1000);

// Add task(s) based on tick intervals.
timer.add({
    id: 'job1',       // unique id of the task
    tickInterval: 5,    // run every 5 ticks (5 x interval = 5000 ms)
    totalRuns: 10,      // run 10 times only. (set to 0 for unlimited times)
    callback(task) {
        // code to be executed on each run
        console.log(task.id + ' task has run ' + task.currentRuns + ' times.');
    }
});

// Start the timer
timer.start();

TaskTimer브라우저와 노드에서 모두 작동합니다.모든 기능은 설명서를 참조하십시오.

세트를 보고 싶을 것입니다.Interval() 및 setTimeout().

여기 괜찮은 튜토리얼 기사가 있습니다.

yes - 특정 시간에 코드를 실행하는 방법을 살펴봅니다.setInterval은 코드를 주기적으로 실행하는 데 사용할 것입니다.

데모를 보고 사용 방법은 여기에 답하십시오.

함수를 주기적으로 실행시키려면 setInterval을 사용합니다.

function test() {
 alert('called!');
}
var id = setInterval('test();', 10000); //call test every 10 seconds.
function stop() { // call this to stop your interval.
   clearInterval(id);
}

토속적인 방법은 정말로setInterval()/clearInterval(), Prototype 라이브러리를 이미 사용 중인 경우 Periodical Executor를 활용할 수 있습니다.

new PeriodicalUpdator(myEvent, seconds);

이렇게 하면 중복되는 호출을 방지할 수 있습니다.http://www.prototypejs.org/api/periodicalExecuter 에서:

"이것은 콜백 기능을 실행하는 데 주어진 간격보다 더 오래 걸릴 경우 콜백 기능의 여러 병렬 실행으로부터 사용자를 보호합니다(콜백 기능의 예외로부터 보호되는 내부 "실행" 플래그를 유지합니다).이 기능은 사용자와 지정된 간격으로 상호 작용하기 위해 하나를 사용하는 경우(예: 프롬프트 사용 또는 확인 통화 사용) 특히 유용합니다. 이렇게 하면 작업 대기 중인 메시지 상자가 여러 개 발생하지 않습니다."

언급URL : https://stackoverflow.com/questions/1224463/is-there-any-way-to-call-a-function-periodically-in-javascript