Помогите разобраться с setTimeout

  • Автор темы Автор темы beejuice
  • Дата начала Дата начала

beejuice

Новичок
Помогите разобраться с setTimeout

Редко пишу на javascript и знаю, что плохо вызывать с помощью setTimeout функцию из самой себя, но более удобного решения пока не вижу.

Код такой:

function selectAction(poleKey){

nextAction = true;

...

if(nextAction) setTimeout(selectAction(poleKey), 1000);

}


Таймаута в одну секунду не происходит. Срабатывает сразу. Почему так?
 
и знаю, что плохо вызывать с помощью setTimeout функцию из самой себя
почему? Но можешь рассказать на всякий случай, что делает эта функция

Таймаута в одну секунду не происходит. Срабатывает сразу. Почему так?
потому что надо в setTimeout функцию передавать, а не undefined или что там у тебя
 
x-yuri, тут все зависит от того, что нужно. Если нужно что-то делать каждую секунду и останавливаться по условию, то стоит делать setInterval а потом останавливать по clearInterval. Преимущество setInterval в том, что планировщик будет дернут только один раз, потом он будет работать на автомате.

beejuice, раз тебе нужно передать параметр в ф-ю, которая должна вызываться по setTimeout или setInterval, то нужно делать замыкание:
PHP:
function selectAction(poleKey){

nextAction = true;

...

if(nextAction) setTimeout(function () { selectAction(poleKey); }, 1000);
// без параметра было бы так:
if(nextAction) setTimeout(selectAction, 1000);

}

но обрати внимание на первую ремарку, возможно, setInterval будет уместнее.
 
dimagolov, Спасибо большое. setInterval не подходит, так как задержка будет "плавающая".
 
Сверху