2015-04-18 2 views
4

Я пытаюсь повторить машинке влияние на резюме страницы моего, и есть ли работать на одной части, за исключением:Добавление обратного вызова JavaScript в то время как цикл

while (i < tags.length) { 
    type(tags[i], content[i], 0, 50); 
    i++; 
} 

Это функция, которая выписывает линий, и он работает правильно, за исключением того, что он записывает все строки сразу. Я хотел бы, чтобы он написал одну строку, затем перешел к следующему и так далее и так далее. Я знаю, что решение заключается в добавлении функции обратного вызова, но я не могу заставить его работать правильно. Любая помощь/совет будут оценены. Благодаря!

Кроме того, здесь приведено полное описание jsfiddle.

ответ

5

обратного вызова и рекурсивная функция кажется как способ пойти

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

+0

Это является довольно удивительным, делает именно то, что я хочу. Спасибо за быстрый ответ. Где хорошее место для просмотра некоторых документов в представлении setTimeout? –

+1

Это довольно аккуратно. Но лично мне не нравится результат. Нужно подождать и посмотреть всю нагрузку на контент. – Yellen

+0

[** MDN **] (https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout), как правило, имеет хорошую документацию по JavaScript. – adeneo

Смежные вопросы