Добавление обратного вызова в цикл 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++;
    }
})();

FIDDLE

Другие вопросы по тегам