renovations
This commit is contained in:
parent
c7d4c7e3ff
commit
e1948130f6
170 changed files with 1496 additions and 1161 deletions
|
@ -0,0 +1,44 @@
|
|||
# Что выведет после 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();
|
||||
```
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue