programing

setInterval loop을 즉시 시작하는 방법은?

lovejava 2023. 10. 11. 20:21

setInterval loop을 즉시 시작하는 방법은?

간단하게setInterval

setInterval(function() {
      // Do something every 9 seconds
}, 9000);

첫 번째 동작은 9초 후에 수행됩니다(t=9s). 루프가 첫 번째 동작을 즉시 수행하도록 강제하는 방법 (t=0)?

나는 그것이 그 메커니즘에 기인한다고 생각합니다.setInterval가지기 위해Delay - Action - Delay - Action ...대신에Action - Delay - Action - Delay ...고리.

편집: 제 기능은 정말 루프입니다.

setInterval(function(){
$('.test').each(function(idx){
    var duration = 1000;
    $(this).delay(duration*idx);
    Some stuff here
});
}, 4000);

단순하게 받아들여라.익명 함수 대신 명명된 함수를 사용할 수 있으며, 이 함수를 호출하고 이 함수에 대한 간격을 설정할 수 있습니다.

function doSomething() {
    console.log("tick");
}
doSomething();
setInterval(doSomething, 9000);

필요한 경우 스코프 만들기:

(function() {
    function doSomething() {
        console.log("tick");
    }
    doSomething();
    setInterval(doSomething, 9000);
})();

마지막으로, 다음과 같이 생성되거나 영향을 미치지 않고 작동합니다.x:

setInterval(function x() {
    console.log("tick");
    return x;
}(), 9000);

가끔은 이런 패턴을...

(function me() {
    // Do something every 9 seconds

    setTimeout(me, 9000);
})();

작업이 실행될 때까지 기다렸다가 다시 호출하기 위해 ~9초를 기다리므로 완전히 같지는 않습니다.그러나 이벤트 대기열의 이벤트가 불필요하게 쌓이지 않도록 유용한 경우가 많습니다(다만 일부 코드를 실행하는 데 9초가 걸릴 가능성은 낮지만).

이전 IE에서는me외부 범위로 누출될 것입니다.

이 소독된 버전을 사용합니다.setInterval, 함수 매개 변수에 앞서 함수를 즉시 호출하고 몇 초 안에 시간이 걸리므로 인라인 함수 정의를 사용하여 함수를 호출하는 것은 실제로 합리적인 것처럼 보입니다.

function startInterval(seconds, callback) {
  callback();
  return setInterval(callback, seconds * 1000);
}

명명된 함수를 사용하여 호출하고 간격에 할당합니다.

var myFnc = function() {
    // Do something every 9 seconds
};
setInterval(myFnc, 9000);
myFnc();

다른 옵션은 setTimeout을 대신 사용하는 것입니다.

var myFnc = function() {
    // Do something every 9 seconds
    setTimeout(myFnc, 9000);
};
myFnc();

언급URL : https://stackoverflow.com/questions/10563344/how-to-start-setinterval-loop-immediately