Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   setTimeout не делает задержки - где ошибка ??? (https://javascript.ru/forum/misc/52576-settimeout-ne-delaet-zaderzhki-gde-oshibka.html)

антигерой 24.12.2014 23:47

setTimeout не делает задержки - где ошибка ???
 
Вот строка:

var scale = 2.5;
for (var i = 1; i <= scale; i+=0.2){ setTimeout(window.alert(Math.round(i*5000)) , Math.round(i*5000) ); }

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

Что я делаю нетак ???

Malleys 25.12.2014 04:19

Метод setTimeout вызывает функцию или вычисляет выражение после определенного количества миллисекунд. (alert
Цитата:

Сообщение от антигерой
фактически мгновенно

возвращает undefined, поэтому надо обернуть функцией)
var scale = 2.5;
for(var i = 1; i <= scale; i += 0.2) {
  setTimeout(function() {
    alert(Math.round(i*5000));
  }, Math.round(i*5000));
}

krutoy 25.12.2014 07:24

var scale = 2.5;
for (var i = 1; i <= scale; i+=0.2){ 
   setTimeout((function(i){return function(){alert(Math.round(i*5000))}}(i)), Math.round(i*5000))
}


Часовой пояс GMT +3, время: 11:56.