setInterval - как стрелять только один раз? - PullRequest
6 голосов
/ 16 марта 2012

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

Проблема в том, что если, например, если я поставлю 3 секунды, он будет срабатывать каждые 3 секунды, то что мне нужновыстрелить только один раз через 3 секунды.

function playSound(timeLeft){
   var sendDataTimeout = function(){
      alert('OK');
   }
   var intervalReference = 0;
   clearInterval(intervalReference);
   intervalReference = setInterval(sendDataTimeout, timeLeft);
}

Ответы [ 2 ]

12 голосов
/ 16 марта 2012

Используйте setTimeout вместо этого, он работает почти так же, но срабатывает только один раз. У вас есть clearTimeout и setTimeout, поэтому он очень похож на setInterval

function playSound(timeLeft){
   var sendDataTimeout = function(){
      alert('OK');
   }
   setTimeout(sendDataTimeout, timeLeft);
}

Вам больше не нужно использовать clearTimeout. Но, к вашему сведению, он существует и работает так же, как и clearInterval.

12 голосов
/ 16 марта 2012

Вам не нужно setInterval, вам нужно setTimeout.

Как следует из названия, setInterval срабатывает регулярно, а setTimeout срабатывает только один раз.Использование такое же, хотя.

...