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
'programing' 카테고리의 다른 글
sql 문의 변수가 쿼리를 중단시킵니다. (0) | 2023.10.11 |
---|---|
배열을 필터 함수로 나눕니다. (0) | 2023.10.11 |
중앙 하나와 오른쪽/왼쪽 정렬 다른 플렉스박스 요소 (0) | 2023.10.11 |
MySQL: 보기 대 저장 프로시저 (0) | 2023.10.11 |
MySql - HAPING vs WHERE (0) | 2023.10.06 |