2012-03-11 4 views
0

Поэтому у меня есть такие code that simulates function line (fn1, delay, fn2, delay ... fnN - вызывает функцию, удаляет его из линии спит немного и так далее).Javascript: создание функции бассейна линии с задержкой

У меня возникла странная проблема - я не вижу задержки. Почему, что не так с моим кодом?

+0

'openWindowDelayedPool.add (appendStuff())' 'будем называть appendStuff' немедленно и передать возвращаемое значение' openWindowDelayedPool.add'. Вместо этого вы хотите передать функцию, а не вызывать ее. Однако у вас должны быть другие проблемы с вашим кодом, потому что я также получаю сообщение об ошибке * Uncaught TypeError: Невозможно вызвать метод «вызов» неопределенного * (это в вашем обратном вызове 'setTimeout'. Параметр затеняет другой« val »). Но даже если эти вещи будут исправлены, это не сработает. Общая логика этой функции не кажется правильной. –

ответ

1

Ваша первая проблема заключается в том, что вы вызываете append немедленно, а не передаете функцию, которая будет вызывать append.

openWindowDelayedPool.add($('.container').append('<p>Test</p>')); 

должен быть

openWindowDelayedPool.add(function(){ 
    $('.container').append('<p>Test</p>') 
}); 

Даже когда вы фиксируете, что это не будет работать должным образом, однако, первый будет работать, но затем все последующие вызовы будут просто найти, что isRunning верно и не выполнить.

Кроме того, как уже упоминалось @FelixKing в комментариях:

setTimeout(function(val){ 

неверен. Вы не хотите передавать параметр этой функции, просто используйте val внутри него.

setTimeout(function(){ 
+0

Я пытался [исправить это] (http://jsfiddle.net/UcsuB/2/), но я получаю только один «Тест» вместо 6 ... Это потому, что remove удаляет все одинаковые значения val? – myWallJSON

+0

Yey - получил это =) [здесь] (http://jsfiddle.net/UcsuB/3/) – myWallJSON

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