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

44 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Что выведет после setInterval?
[importance 5]
В коде ниже запускается `setInterval` каждые 10мс, и через 50мс запланирована его отмена.
После этого запущена тяжёлая функция `f`, выполнение которой (мы точно знаем) потребует более 100мс.
Сработает ли `setInterval`, как и когда?
Варианты:
<ol>
<li>Да, несколько раз, *в процессе* выполнения `f`.</li>
<li>Да, несколько раз, *сразу после* выполнения `f`.</li>
<li>Да, один раз, *сразу после* выполнения `f`.</li>
<li>Нет, не сработает.</li>
<li>Может быть по-разному, как повезёт.</li>
</ol>
Что выведет `alert` в строке `(*)`?
```js
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();
```