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);
Một phiên bản sửa đổi của câu trả lời của Daniel Vassallo, với các biến được trích xuất thành các tham số để làm cho chức năng có thể tái sử dụng nhiều hơn:
Trước tiên hãy xác định một số biến cần thiết:
var startIndex = 0;
var data = [1, 2, 3];
var timeout = 3000;
Tiếp theo bạn nên xác định chức năng bạn muốn chạy. Điều này sẽ được thông qua i, chỉ số hiện tại của vòng lặp và độ dài của vòng lặp, trong trường hợp bạn cần nó:
function functionToRun(i, length) {
alert(data[i]);
}
Phiên bản tự thực hiện
(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);
Phiên bản chức năng
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