Добавление обратного вызова в цикл JavaScript
Я пытаюсь воспроизвести эффект пишущей машинки на моей странице резюме, и если работаю, за исключением одной части:
while (i < tags.length) {
type(tags[i], content[i], 0, 50);
i++;
}
Это функция, которая записывает строки, и она работает правильно, за исключением того факта, что она записывает все строки одновременно. Я хотел бы написать одну строку, затем перейти к следующей, и так далее, и так далее. Я знаю, что решение заключается в добавлении функции обратного вызова, но я не могу заставить ее работать правильно. Любая помощь / совет будет оценен. Спасибо!
Кроме того, вот полный JSFiddle.
1 ответ
Решение
Обратный вызов и рекурсивная функция, кажется, путь
var type = function (target, message, index, interval, callback) {
if (index < message.length) {
$(target).append(message[index++]);
setTimeout(function () {
type(target, message, index, interval, callback);
}, interval);
} else {
callback();
}
}
var i = 0;
(function recursive() {
if (i < tags.length) {
type(tags[i], content[i], 0, 50, recursive);
i++;
}
})();