2014-11-14 3 views
-2

У меня есть аналогичный код, который ниже, а setInterval работает намного быстрее, чем 1000 мс, и он вызывает сбои/замедляет страницу.setInterval слишком быстрый цикл цикла

var checkDiffTest = function(){ 

    console.log('test checkDiff init'); 

    var interval = setInterval(countdownTest(), 1000); 

} 
var countdownTest = function(){ 

    console.log('test countdown init'); 

    checkDiffTest(); 

} 

countdownTest(); 
+4

'setInterval' хочет получить ссылку на функцию:' setInterval (countdownTest, 1000) '. 'countdownTest()' просто вызывает 'countdownTest' немедленно. – Oriol

ответ

4

Вы устанавливаете новый интервал каждый раз, когда интервал работает:

  • Интервал вызовов countdownTest()
  • Что называется checkDiffTest()
  • который создает новый интервал (в то время как последний еще бег)

Новый 1000 мс интервал запускается каждый 1000мс.


Похоже, что вы хотите вместо этого setTimeout().

Также countdownTest() как первый параметр setInterval вызывает эту функцию сразу. Вы хотите передать функцию в качестве ссылки:

var checkDiffTest = function(){ 
    console.log('test checkDiff init') 
    var interval = setTimeout(countdownTest, 1000); 

} 
var countdownTest = function(){ 
    console.log('test countdown init'); 
    checkDiffTest(); 
} 

countdownTest(); 
+0

Спасибо, это сработало! – Ross

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