2013-06-24 4 views
0

JS Fiddle codeMootools, как сделать это асинхронное каждый цикл

var id = 1; 
var lala = new Array(
    'Hello World', 
    'This is my new and fancy console!', 
    'See how its typing?', 
    'Isn\'t that cool ? ', 
    'Try it out for yourself!'); 
lala.each(function (line) { 
    id++; 
    fullID = 'Div' + id; 
    new Element('p', { 
     'id': fullID 
    }).inject($(document.body)); 
    texttype(fullID, line, 100, 100); 
}); 

Я пытаюсь вызвать метод в MooTools каждый цикл, но проблема заключается в том, что из-за JavaScripts природы всех вызовы метода называется в приблизе , в то же время. Как я могу предотвратить это? Нужно ли мне что-то возвращать из метода, который я называю? Есть ли другой способ? Произвольные тайм-ауты на самом деле не являются хорошим решением из-за проблем с синхронизацией. (Обратите внимание, что этот код находится в стадии тестирования, поэтому его фиктивные данные и имена вара)

+1

Почему вы отметили этот вопрос с помощью jQuery? Пожалуйста, отметьте вопросы соответствующим образом. –

+0

Функция texttype - jQuery afaik. – Sitethief

ответ

1

В функции texttype есть пятый аргумент, который является функцией обратного вызова, которая вызывается после того, текст набирается:

var doType = function(i) { 
    var fullID = 'Div' + (i + 1); // Don't forget var! 
    new Element('p', { 
     'id': fullID 
    }).inject($(document.body)); 
    texttype(fullID, lala[i], 100, 100, function() { 
     doType(i + 1); 
    }); 
} 
doType(0); 
+0

Спасибо большое! Это работает! – Sitethief

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