var startIndex = 0;
var data = [1, 2, 3];
var timeout = 1000;
function functionToRun(i, length) {
alert(data[i]);
}
(function forWithDelay(i, length, fn, delay) {
setTimeout(function() {
fn(i, length);
i++;
if (i < length) {
forWithDelay(i, length, fn, delay);
}
}, delay);
})(startIndex, data.length, functionToRun, timeout);
Daniel Vassallo의 답변의 수정 된 버전. 변수를 추출하여 함수를보다 재사용 가능하게 만듭니다.
먼저 몇 가지 필수 변수를 정의하겠습니다.
var startIndex = 0;
var data = [1, 2, 3];
var timeout = 3000;
다음으로 실행할 기능을 정의해야합니다. 필요한 경우 i, 루프의 현재 인덱스 및 루프 길이를 전달합니다.
function functionToRun(i, length) {
alert(data[i]);
}
자체 실행 버전
(function forWithDelay(i, length, fn, delay) {
setTimeout(function () {
fn(i, length);
i++;
if (i < length) {
forWithDelay(i, length, fn, delay);
}
}, delay);
})(startIndex, data.length, functionToRun, timeout);
기능적 버전
function forWithDelay(i, length, fn, delay) {
setTimeout(function () {
fn(i, length);
i++;
if (i < length) {
forWithDelay(i, length, fn, delay);
}
}, delay);
}
forWithDelay(startIndex, data.length, functionToRun, timeout); // Lets run it