2015-11-17 2 views
0

В a.js файле У меня есть функция называетсяфункциональность SetTimeout не происходит

Move(coordinates,callback) { 
//Move the cursor from point A to point B based on the coordinates as parameter 
}); 

В b.js файл Я зову эту функцию, так как я хочу видеть движение курсора медленно после каждые 30 секунд. Это звонок.

for(i=0;i<6;i++) 
{ 
setTimeout(Move(inputcordinates,events = { 
    //someevents 
}),30000); 
} 

Проблема при загрузке страницы, функция становится выполнена и курсор уже переехал 6 раз в положение, Задержка не происходит в моих глазах, но функциональность выполняется точно ,

В чем может быть проблема в коде, показанном выше. Я увеличил код примерно до 120000, но все равно никакого эффекта.

+2

Вы звоните в 'Move()' и присвоить ему возвращаемое значение в качестве первого параметра 'setTimeout'. Оберните его в анонимную функцию 'setTimeout (function() {Move (...)}, ...'. И вы должны отрегулировать параметр таймаута в каждом раунде цикла. В противном случае все шесть тайм-аутов будут срабатывать одновременно Что-то вроде '30000 * (i + 1)' – Andreas

ответ

4

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

setTimeout(function() { 
    Move(inputcordinates,events = { 
     //someevents 
    }); 
}, 30000) 
+0

Да, это решение .... Но проблема здесь в том, что все таймауты будут срабатывать одновременно. Из вопроса, который не тот. –

+0

Как упоминалось в Комментарий Андреаса составляет 30000 * (i + 1) –

+0

Который дает временную несогласованность между интервалами. Вот почему я использовал Set Interval Method вместо Set Timeout –

0

Вы также можете использовать setInterval для этого, которое легко достичь и ясно Попробуйте, как показано ниже ..

var i = 0; 
var myVar; 
     function getData() { 

      myVar = setInterval(function() { Move(x,y)() }, 2000); 

     } 
     function Move(coordinates,callback){ 
      i++; 
      alert('Hi'); 
      if (i == 5) { 
       alert('5 times'); 
       clearInterval(myVar); 
      } 

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