en.javascript.info/1-js/7-js-misc/3-setTimeout-setInterval/5-setinterval-result/task.md
2015-03-10 12:36:58 +03:00

1.4 KiB
Raw Blame History

Что выведет после setInterval?

[importance 5]

В коде ниже запускается setInterval каждые 10мс, и через 50мс запланирована его отмена.

После этого запущена тяжёлая функция f, выполнение которой (мы точно знаем) потребует более 100мс.

Сработает ли setInterval, как и когда?

Варианты:

  1. Да, несколько раз, *в процессе* выполнения `f`.
  2. Да, несколько раз, *сразу после* выполнения `f`.
  3. Да, один раз, *сразу после* выполнения `f`.
  4. Нет, не сработает.
  5. Может быть по-разному, как повезёт.

Что выведет alert в строке (*)?

var i;
var timer = setInterval(function() { // планируем setInterval каждые 10мс
  i++;
}, 10);

setTimeout(function() { // через 50мс - отмена setInterval
  clearInterval(timer);
*!*
  alert( i ); // (*)
*/!*
}, 50);

// и запускаем тяжёлую функцию
function f() {
  // точное время выполнения не играет роли
  // здесь оно заведомо больше 100мс
  for (i = 0; i < 1e8; i++) f[i % 2] = i;
}

f();