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