ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js

Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°ΠΌΠΈ Π² JavaScript

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ JavaScript

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π Π°Π±ΠΎΡ‚Π° с DOM

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

НСкоторыС ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ES6

НСкоторыС Π²ΠΈΠ΄Π΅ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π±Π΅Π³Π°Ρ‚ΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄, Ρ‚ΠΊ ΠΊ этому мСсту ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° ΠΌΡ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Π΅Ρ‰Π΅ Π½Π΅ вСсь ES6. ΠŸΡ€ΠΎΡΡ‚ΠΎ пропускайтС Ρ‚Π°ΠΊΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, посмотритС ΠΏΠΎΡ‚ΠΎΠΌ.

РСгулярки

Π Π°Π·Π½ΠΎΠ΅

Π Π°Π±ΠΎΡ‚Π° с канвасом

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚

Drag-and-Drop

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΠΎ ООП

Π’Π°ΡˆΠ° Π·Π°Π΄Π°Ρ‡Π°: посмотритС, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Promise ES6

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° jQuery

Π’ΠΊ. jQuery устарСваСт, объявляю эти ΡƒΡ€ΠΎΠΊΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹Π½ΠΎΡˆΡƒ Π² ΠΊΠΎΠ½Π΅Ρ† ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° (Ρ‚Π°ΠΊ ΠΏΠΎ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΡƒΡ€ΠΎΠΊΠΈ сСрСдины ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°, Ссли Ρ‡Ρ‚ΠΎ). Π’ пСрспСктивС ΠΏΠ΅Ρ€Π΅Π΅Π΄Π΅Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ jq.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ научимся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°ΠΌΠΈ Π² JavaScript. Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°ΠΌΠΈ, Π²Ρ‹ смоТСтС автоматичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π° страницС ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ слайдСр ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°ΠΌΠΈ Π² JavaScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ setInterval, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ setInterval

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½ΡƒΠΆΠ½Ρ‹ΠΉ для этого ΠΊΠΎΠ΄. ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π΄Π°Π½ ΠΈΠ½ΠΏΡƒΡ‚. Π‘ΡƒΠ΄Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° value Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ:

Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ всСгда ΠΎΡ‚Π΄Π°Π΅Ρ‚ строку, Π΄Π°ΠΆΠ΅ Ссли Ρ‚Π°ΠΌ хранится число, ΠΊΠ°ΠΊ Ρƒ нас, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ elem.value Π²Π΅Ρ€Π½Π΅Ρ‚ ‘1’, Π° Π½Π΅ 1 (Π² самом Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, ΠΊΠΎΠ³Π΄Π° Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ Π΅Ρ‰Π΅ 1). И получится, Ρ‡Ρ‚ΠΎ elem.value + 1 это ‘1’+1, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ’11’, Π° Π½Π΅ 2).

Если ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ parseInt, Ρ‚ΠΎ Π² ΠΈΠ½ΠΏΡƒΡ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сначала 1, ΠΏΠΎΡ‚ΠΎΠΌ 2, ΠΏΠΎΡ‚ΠΎΠΌ 3 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ научимся Π΅Π³ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ clearInterval, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° (созданного Ρ‡Π΅Ρ€Π΅Π· setInterval), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΎΡ‚ΠΊΡƒΠ΄Π° бСрСтся этот Π½ΠΎΠΌΠ΅Ρ€:

Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ созданиС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· setInterval ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€, ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ clearInterval, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ остановился.

ΠœΠ΅Ρ‚ΠΎΠ΄ setTimeout

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½, называСтся setTimeout. Он позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄ запуском ΠΊΠΎΠ΄Π° (эта Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° случится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΊΠΎΠ΄ выполнится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ setInterval).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: setTimeout ΠΈ setInterval

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π° ΠΏΠΎΠ·ΠΆΠ΅, Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π­Ρ‚ΠΎ называСтся Β«ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π°Β».

Для этого ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ спСцификации JavaScript. Но Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ срСд выполнСния JS-ΠΊΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ доступ ΠΊ этим ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ. Π’ частности, ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²ΠΎ всСх Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… ΠΈ Node.js.

setTimeout

НапримСр, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ sayHi() спустя ΠΎΠ΄Π½Ρƒ сСкунду:

Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ являСтся строкой, Ρ‚ΠΎ JavaScript создаст ΠΈΠ· Π½Π΅Ρ‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

Но использованиС строк Π½Π΅ рСкомСндуСтся. ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НапримСр, Ρ‚Π°ΠΊ:

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΡˆΠΈΠ±Π°ΡŽΡ‚ΡΡ, добавляя скобки () послС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

ΠžΡ‚ΠΌΠ΅Π½Π° Ρ‡Π΅Ρ€Π΅Π· clearTimeout

Бинтаксис для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹:

Π’ ΠΊΠΎΠ΄Π΅ Π½ΠΈΠΆΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°Ρ‚Π΅ΠΌ отмСняСм Π΅Π³ΠΎ (просто ΠΏΠ΅Ρ€Π΅Π΄ΡƒΠΌΠ°Π»ΠΈ). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит:

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΎΠΉ спСцификации Π½Π° эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, поэтому Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ являСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

Для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ описаны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² стандарта HTML5.

setInterval

ΠœΠ΅Ρ‚ΠΎΠ΄ setInterval ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ синтаксис ΠΊΠ°ΠΊ setTimeout :

ВсС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Но ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΡ‚ setTimeout Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ функция запускаСтся Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Π° пСриодичСски Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 2 сСкунды. Π§Π΅Ρ€Π΅Π· 5 сСкунд Π²Ρ‹Π²ΠΎΠ΄ прСкращаСтся:

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ запуститС ΠΊΠΎΠ΄ Π²Ρ‹ΡˆΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Ρ‘Ρ‚Π΅ с Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ alert нСсколько сСкунд, Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ alert Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ сразу, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ. Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ сообщСниями alert Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ 2 сСкунды.

РСкурсивный setTimeout

Π•ΡΡ‚ΡŒ Π΄Π²Π° способа Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ рСгулярно.

НапримСр, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ отправляСт запрос для получСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСр ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 5 сСкунд, Π½ΠΎ Ссли сСрвСр ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» запросов Π΄ΠΎ 10, 20, 40 сСкунд… Π’ΠΎΡ‚ псСвдокод:

А Ссли Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ, рСсурсоёмкиС ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΈ ΡΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ² Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅.

Π‘Ρ€Π°Π²Π½ΠΈΠΌ Π΄Π²Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ setInterval :

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ рСкурсивный setTimeout :

Для setInterval Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ func(i) ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 100 мс:

РСальная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ func с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ setInterval мСньшС, Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΊΠΎΠ΄Π΅!

Π’ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ func Π±ΡƒΠ΄Π΅Ρ‚ дольшС, Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, ΠΈ Π·Π°ΠΉΠΌΡ‘Ρ‚ Π±ΠΎΠ»Π΅Π΅ 100 мс.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π΄Π²ΠΈΠΆΠΎΠΊ ΠΆΠ΄Ρ‘Ρ‚ окончания выполнСния func ΠΈ Π·Π°Ρ‚Π΅ΠΌ провСряСт ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΈ, Ссли врСмя истСкло, Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ запускаСт Π΅Π³ΠΎ снова.

НиТС прСдставлСно ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ процСсс Ρ€Π°Π±ΠΎΡ‚Ρ‹ рСкурсивного setTimeout :

РСкурсивный setTimeout Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ (здСсь 100 мс).

Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² планируСтся Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ.

Π•ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт. Ѐункция ссылаСтся Π½Π° внСшнСС лСксичСскоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, поэтому ΠΏΠΎΠΊΠ° ΠΎΠ½Π° сущСствуСт, внСшниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠΆΠ΅. Они ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС памяти, Ρ‡Π΅ΠΌ сама функция. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли рСгулярный Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, Π΄Π°ΠΆΠ΅ Ссли функция ΠΎΡ‡Π΅Π½ΡŒ малСнькая.

setTimeout с Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ

Π­Ρ‚ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² func Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ быстро, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Но ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ выполнСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

Π’Π°ΠΊ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ сразу послС выполнСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°.

НапримСр, этот ΠΊΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚Β» ΠΈ Π·Π°Ρ‚Π΅ΠΌ сразу Β«ΠœΠΈΡ€Β»:

ΠŸΠ΅Ρ€Π²Π°Ρ строка ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² Π² Β«ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒΒ» Ρ‡Π΅Ρ€Π΅Π· 0 мс. Но ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ Β«ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒΒ» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ «ΠŸΡ€ΠΈΠ²Π΅Ρ‚» выводится ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, Π° «ΠœΠΈΡ€» – послС Π½Π΅Π³ΠΎ.

Π•ΡΡ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ случаи использования Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрим Π² Π³Π»Π°Π²Π΅ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉΠ½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»: ΠΌΠΈΠΊΡ€ΠΎΠ·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠ·Π°Π΄Π°Ρ‡ΠΈ.

Π’ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π΅ΡΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ часто Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ счётчики ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Π’ стандартС HTML5 говорится: «послС пяти Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… миллисСкунд.Β».

АналогичноС происходит ΠΏΡ€ΠΈ использовании setInterval вмСсто setTimeout : setInterval(f) запускаСт f нСсколько Ρ€Π°Π· с Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ 4+ мс.

Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ сущСствуСт Π΄Π°Π²Π½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ скрипты ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Π½Π΅Π³ΠΎ, поэтому ΠΎΠ½ΠΎ сохраняСтся ΠΏΠΎ историчСским ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.

Π­Ρ‚ΠΎΠ³ΠΎ ограничСния Π½Π΅Ρ‚ Π² сСрвСрном JavaScript. Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы планирования асинхронных Π·Π°Π΄Π°Ρ‡. НапримСр, setImmediate для Node.js. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ относится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌ.

Π˜Ρ‚ΠΎΠ³ΠΎ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ планирования Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ.

НапримСр, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

Всё это ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» срабатывания Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° (ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ) Π΄ΠΎ 300 ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 1000 мс Π² зависимости ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ настроСк ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ОБ.

Π—Π°Π΄Π°Ρ‡ΠΈ

Π’Ρ‹Π²ΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду

Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΉ асинхронный JavaScript: Π’Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹

НСобходимыС условия:Базовая ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ, достаточноС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ основ JavaScript.
ЦСль:ПониманиС асинхронных Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ², ΠΈ Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Π΅Π±-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»Π° программистам JavaScript ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяли ΠΈΠΌ асинхронно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΠΎ истСчСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ асинхронный Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ скаТСтС Π΅ΠΌΡƒ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.

setTimeout() ВыполняСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠΎ истСчСнии ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ setInterval() ВыполняСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° нСсколько Ρ€Π°Π· с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ. requestAnimationFrame() БоврСмСнная вСрсия setInterval (). Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π· пСрСрисовываСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, позволяя Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ с подходящСй частотой ΠΊΠ°Π΄Ρ€ΠΎΠ² нСзависимо ΠΎΡ‚ срСды, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° выполняСтся.

Асинхронный ΠΊΠΎΠ΄, установлСнный этими функциями, выполняСтся Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ (ΠΏΠΎ истСчСнии ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°).

Π’Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ (ΠΈ часто Π±ΡƒΠ΄Π΅Ρ‚Π΅) Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄ Π΄ΠΎ выполнСния Π²Ρ‹Π·ΠΎΠ²Π° setTimeout () ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ итСрациями setInterval (). Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для процСссора, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Ρ‰Ρ‘ большС Π·Π°Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ асинхронного ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любой асинхронный ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ станСт доступСн основной ΠΏΠΎΡ‚ΠΎΠΊ. (Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° стСк пуст.) Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ большС ΠΏΠΎ этому вопросу ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ изучСния этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π’ любом случаС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для запуска постоянной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Π²Π΅Π±-сайтС ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

setTimeout()

Как ΠΌΡ‹ Ρ€Π°Π½Π΅Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, setTimeout () выполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠΎ истСчСнии Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

NOTE: Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ врСмя (ΠΈΠ»ΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°) Π½Π΅ являСтся Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ выполнСния, Π° скорСС ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ выполнСния. ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ этим функциям, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° стСк Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ Π½Π΅ станСт пустым.

Как слСдствиС, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ setTimeout (fn, 0), Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стСк Π±ΡƒΠ΄Π΅Ρ‚ пуст, Π° Π½Π΅ сразу. Если Π²Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, ΠΊΠ°ΠΊ setTimeout (fn, 0), Π½ΠΎ сразу послС выполнСния Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ насчитываСт ΠΎΡ‚ 1 Π΄ΠΎ 10 ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ΠΎΠ², ваш колбэк Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Ρ‡Π΅Ρ€Π΅Π· нСсколько сСкунд.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π΄Π²Π΅ сСкунды ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎΠ³Π΄Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ сообщСниС (ΠΆΠΈΠ²ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈ исходный ΠΊΠΎΠ΄):

Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°Ρ‚ΡŒ своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ имя ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Ρ‘ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Ρ‘ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ссылку Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² setTimeout (). Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ вСрсии Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° эквивалСнтны ΠΏΠ΅Ρ€Π²ΠΎΠΉ:

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ функция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρƒ, Ρ‚Π°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° событиС. Но это Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Π² чистотС, особСнно Ссли колбэк Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС, Ρ‡Π΅ΠΌ нСсколько строк ΠΊΠΎΠ΄Π°.

setTimeout () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ссылки Π½Π° Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ ΠΏΠΎΠ·ΠΆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ setTimeout ()

Π›ΡŽΠ±Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, выполняСмой Π²Π½ΡƒΡ‚Ρ€ΠΈ setTimeout (), Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π΅ΠΉ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΊΠΎΠ½Ρ†Π΅ списка.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»Π° ΠΏΡ€ΠΈΠ²Π΅Ρ‚ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΌΡƒ Π΅ΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ имя Π² Π²Ρ‹Π·ΠΎΠ² setTimeout () Π² качСствС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ²

Note: Π‘ΠΌ. greeter-app.html для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ дСмонстрации, которая позволяСт Π²Π°ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя для привСтствия ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ привСтствиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ (см. исходный ΠΊΠΎΠ΄).

setInterval()

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°

АктивноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнного сСкундомСра!

Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ врСмя, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Π½ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ:

НСсколько подсказок для вас:

Note: Если Π²Ρ‹ застряли, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π°ΡˆΡƒ Π²Π΅Ρ€ΡΠΈΡŽ (см. Ρ‚Π°ΠΊΠΆΠ΅ исходный ΠΊΠΎΠ΄ ).

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ setTimeout () ΠΈ setInterval ()

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с setTimeout () ΠΈ setInterval () слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‰Π°Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΈΡ….

РСкурсивныС Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСкурсивный setTimeout () для запуска ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 100 миллисСкунд:

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ двумя вСрсиями ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅Π²Π΅Π»ΠΈΠΊΠ°.

НСмСдлСнныС Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Ρ‹

ИспользованиС 0 Π² качСствС значСния для setTimeout () позволяСт ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ колбэк-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ основной ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠΎΠ΄Π°.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ clearTimeout() ΠΈΠ»ΠΈ clearInterval()

clearTimeout () ΠΈ clearInterval () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ список записСй для очистки. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ любой ΠΌΠ΅Ρ‚ΠΎΠ΄ для очистки setTimeout () ΠΈΠ»ΠΈ setInterval ().

requestAnimationFrame()

Note: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования requestAnimationFrame() Π² этом курсС β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² РисованиС Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, and ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° построСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° колбэк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ ΠΏΠ΅Ρ€Π΅Π΄ пСрСрисовкой. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ шаблон, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ:

ИдСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ваша анимация обновляСтся (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ваши спрайты ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ, счёт обновляСтся, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘). Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ процСсс. Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ requestAnimationFrame () со ссылкой Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΈ это Π΄Π°Ρ‘Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ снова ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ пСрСрисовкС дисплСя. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ выполняСтся Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ рСкурсивно Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ requestAnimationFrame ().

Однако, Ссли Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТноС, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ доступны Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² the DOM (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ 2D Canvas API ΠΈΠ»ΠΈ WebGL ), requestAnimationFrame() ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв.

Как быстро Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ваша анимация?

ΠŸΠ»Π°Π²Π½ΠΎΡΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ частоты ΠΊΠ°Π΄Ρ€ΠΎΠ² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ измСряСтся Π² ΠΊΠ°Π΄Ρ€Π°Ρ… Π² сСкунду (fps). Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ это число, Ρ‚Π΅ΠΌ ΠΏΠ»Π°Π²Π½ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ваша анимация Π΄ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ экранов ΠΈΠΌΠ΅ΡŽΡ‚ частоту обновлСния 60 Π“Ρ†, максимальная частота ΠΊΠ°Π΄Ρ€ΠΎΠ², ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ, составляСт 60 ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду (FPS) ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ. Однако большСС количСство ΠΊΠ°Π΄Ρ€ΠΎΠ² ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ большС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, которая часто ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°ΠΈΠΊΠ°Π½ΠΈΠ΅ ΠΈ пропуски, Ρ‚Π°ΠΊΠΆΠ΅ извСстныС ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°Π΄Ρ€ΠΎΠ² ΠΈΠ»ΠΈ Π·Π°Π΅Π΄Π°Π½ΠΈΠ΅.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ с частотой обновлСния 60 Π“Ρ† ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ 60 ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠΊΠΎΠ»ΠΎ 16,7 миллисСкунд (1000/60) для выполнСния ΠΊΠΎΠ΄Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ для Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ°Π΄Ρ€Π°. Π­Ρ‚ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΠ±ΡŠΡ‘ΠΌΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²ΠΎ врСмя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прохоТдСния Ρ†ΠΈΠΊΠ»Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ.

Π§Π΅ΠΌ отличаСтся requestAnimationFrame() ΠΎΡ‚ setInterval() and setTimeout()?

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π΅Ρ‰Ρ‘ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ requestAnimationFrame () отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ€Π°Π½Π΅Π΅. Глядя Π½Π° наш ΠΊΠΎΠ΄ свСрху:

Вакой ТС код с использованиСм setInterval() :

Π’ Ρ‚ΠΎΠΌ числС врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ°

Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²Π΅Ρ‰ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ врСмя ΠΈ Π² постоянном Ρ‚Π΅ΠΌΠΏΠ΅, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, насколько быстрым ΠΈΠ»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вашС устройство. ΠžΠ±Ρ‰ΠΈΠΉ шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π±Ρ‹ использовали, выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ HTML шаблон (Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ этот).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² JavaScript: ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setTimeout ΠΈ setInterval

ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js

ΠœΠ΅Ρ‚ΠΎΠ΄ setTimeout β€” это встроСнная функция JavaScript, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ отсчСта (Π² миллисСкундах) для выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас появилась Π·Π°Π΄Π°Ρ‡Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ с привСтствиСм, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π΅ сСкунды послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ зашСл Π½Π° сайт. Или ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ воспроизвСсти Π·Π²ΡƒΠΊ Ρ‡Π΅Ρ€Π΅Π· сСкунду послС объявлСния побСдитСля Π² ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ³Ρ€Π΅. Π’ Ρ‚Π°ΠΊΠΎΠΉ ситуации Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция Π·Π°ΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Надо ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ setTimeout

ΠœΠ΅Ρ‚ΠΎΠ΄ setTimeout запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π·Π° Π²Ρ‹Π·ΠΎΠ², Π° Π·Π½Π°Ρ‡ΠΈΡ‚ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setTimeout ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Основной ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ синтаксис этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

setTimeout (функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² миллисСкундах)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ всС просто: функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° сработаСт ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅:

setTimeout () позволяСт Π½Π°ΠΌ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², сколько Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π”ΠΆΠΎΠ½Π° β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, вошСдшСго Π² Π½Π°ΡˆΡƒ систСму. Для этого Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ† списка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² setTimeout :

setTimeout (функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² миллисСкундах, arg1)

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

Глядя Π½Π° ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ соблазн ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. НапримСр:

SetTimeout (Greet(loggedInUser), 2000);

Ѐункция clearTimeout

Иногда Π±Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°Ρ‡Π°Π²ΡˆΡƒΡŽΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² этом случаС? ΠœΠ΅Ρ‚ΠΎΠ΄ setTimeout () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠ»ΡŽΡ‡ ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΡƒ прСрывания, Ρ‚Π΅ΠΌ самым взяв Π² свои Ρ€ΡƒΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ самим ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Π°. НапримСр:

const timerId = setTimeout(Greet, 5000, loggedInUser);

Π—Π΄Π΅ΡΡŒ timerId β€” Ρ‚ΠΎΡ‚ самый ΠΊΠ»ΡŽΡ‡, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ссылки Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚, этот ΠΊΠ»ΡŽΡ‡ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ clearTimeout () Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

ΠŸΡ€ΠΈ использовании clearTimeout() происходит ΠΎΡ‚ΠΌΠ΅Π½Π° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, ΠΈ функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ сработаСт.

ΠœΠ΅Ρ‚ΠΎΠ΄ setInterval

ΠœΠ΅Ρ‚ΠΎΠ΄ setInterval ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ истСчСнии ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π‘Ρ…Π΅ΠΌΠ° построСния этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

Π’ этом случаС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° β€” это врСмя Π² миллисСкундах, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² консоль Hello John ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ Ρ‚Ρ€ΠΈ сСкунды.

ВСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

Ѐункция sayHello Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° всСго Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π°.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒΡΡ вопросом, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Π½Π΅ Π·Π° Π΅Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ JavaScript выполняСт рассматриваСмыС Π½Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, Π² JS β€” ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, выполняСмый построчно. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ каТдая строка ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ своС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° блокируСтся.

Но Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Они ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ. К Π½ΠΈΠΌ относятся:

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли Π±Ρ‹ ΠΌΡ‹ прописали Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ способом, Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π½Π΅ пСрСстал Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, вСдь послС выполнСния строки let timerID = setInterval(sayHello, 3000, «John») JavaScript ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» Π±Ρ‹ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ ΠΊΠΎΠ΄Π° if (counter === 3) ΠΈ условиС Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹.

РСкурсивный setTimeout

ΠœΠ΅Ρ‚ΠΎΠ΄ setInterval запускаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ n миллисСкунд, Π½Π΅ обращая внимания Π½Π° Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Если функция ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· срабатываСт с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ, Ρ‚ΠΎΠ³Π΄Π° всС Π² порядкС:

ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js

Ѐункция срабатываСт с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ

Но Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° врСмя выполнСния мСняСтся Π² зависимости ΠΎΡ‚ условий сСти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js

ВрСмя выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ

Или ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js

ВрСмя выполнСния ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° Π½ΠΈΠΌ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ послСдствий ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… случаСв, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСкурсивный Π²Ρ‹Π·ΠΎΠ² setTimeout ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°.

Для наглядности рассмотрим распространСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сСрвиса ΠΏΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ запросов Π½Π° сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅ послСднСго ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π» Π±Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ запроса:

C рСкурсивным setTimeout ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ², исходя ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ.

ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ запустит ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· сСкунду ΠΏΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ js

Ѐиксированная врСмСнная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ, вСдь Π½ΠΎΠ²Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² планируСтся, ΠΊΠΎΠ³Π΄Π° закончился Π²Ρ‹Π·ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ.

Π§Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ

Но здСсь Π΅ΡΡ‚ΡŒ свои ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ. Ѐункция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с внСшними ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΌΠΈ большС памяти, Ρ‡Π΅ΠΌ ΠΎΠ½Π° сама. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΈ отсутствии большой нСобходимости Π² частом Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ смысл Π΅Π³ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

НулСвая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°

Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ setTimeout написано, Ρ‡Ρ‚ΠΎ delay (врСмСнная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°) β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅. Если ΠΎΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚ΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ ΠΈ функция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° срабатываСт Β«ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС». Вакая странная Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° обусловлСна Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° своСго Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° с минимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ 4 мс Π² соврСмСнных Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…, Π΄ΠΎ 15 мс Π² Π±ΠΎΠ»Π΅Π΅ старых. Но ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Ρ€Π΅ΠΆΠ΅ β€” с ΠΎΠΏΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ 1000 мс.

Π­Ρ‚ΠΎ связано с ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π½Π° Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ страницС. Π­Ρ‚ΠΈΠΌ Π³Ρ€Π΅ΡˆΠ°Ρ‚ Google Chrome, Firefox, IE10. На частоту запуска Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π²Π»ΠΈΡΡŽΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° процСссора ΠΈ Ρ€Π΅ΠΆΠΈΠΌ экономии энСргии разряТСнной Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ сообщСния, ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎΡΡ спустя 2000 миллисСкунд послС навСдСния ΠΌΡ‹ΡˆΠΊΠΎΠΉ Π½Π° элСмСнт. УсловиС: Ссли курсор ΡƒΠ±Ρ€Π°Π»ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, сообщСниС Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.

Π Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅ΠΌ

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ измСрСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц Ρƒ посСтитСлСй сайта

Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Server-Sent API с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния Javascript Π² Nginx’e

Π’ своСм Π±Π»ΠΎΠ³Π΅ индийский Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π¨Π°ΡˆΠ²Π°Ρ‚ Π’Π΅Ρ€ΠΌΠ° (Shashwat Verma) рассказал, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-сайт ΠΈΠ»ΠΈ Π²Π΅Π±-страницу Π² прогрСссивноС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (PWA).

Как просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π΄Π΅Π±Π°Π³ ΠΈ Π½Π΅ Π»Π°Π·ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π±ΠΎΡ€ΠΎΠ΄Π°Ρ‚Ρ‹Π΅ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ajax-запросы, Π½Π°Ρ€ΡƒΡˆΠ°Ρ Π²Π°ΡˆΡƒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π€ΠΎΡ€ΡƒΠΌ

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ

setTimeout

Бинтаксис

АргумСнты

ОписаниС, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ выполняСт ΠΊΠΎΠ΄(ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ), ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅, асинхронно, с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² delay миллисСкунд.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setInterval, setTimeout выполняСт ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Π²Ρ‹Π·ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ:

Π’Ρ‹Π·ΠΎΠ² со строкой сущСствуСт для совмСстимости с ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌΠΈ вСрсиями javascript.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ выполнСния, this

МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ this явно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, this ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚cя Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΠ΅. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ промСТуточная пСрСмСнная Π²ΠΎ внСшнСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ присваиваСтся this :

ΠžΡ‚ΠΌΠ΅Π½Π° выполнСния

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ setTimeout ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ clearTimeout, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°.

Минимальная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ количСство Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° процСссор.

Π­Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ касаСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ анимируСтся большоС количСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ этом случаС, ΠΏΠΎ возмоТности, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт всю Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ, Π° Π½Π΅ мноТСство нСзависимых.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Илья, Бпасибо.
Π•Π²Π³Π΅Π½ΠΈΠΉ.

Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ контСкста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ call/apply, Π»ΠΈΠ±ΠΎ промСТуточная пСрСмСнная Π² самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π·Π°Ρ€Π°Π½Π΅Π΅ ставится Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π—Π° clearTimeout() ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ спасибо!

А ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚?

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€, Ρ‚ΠΎΠ³Π΄Π° прописываСм всС Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π½Π΅ паримся. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ происходит ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ 60 микросСкунд. + Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Ρ‘ ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΡ†Π΅.

1. НС ΠΌΠΈΠΊΡ€ΠΎ, Π° миллисСкунд.
2. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 25-30 Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² Π² сСкунду Π½Π΅ очищая ΠΈΡ…, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всСго-лишь 1 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ setInterval, Ρ‰Π΅Π»ΠΊΠ°ΡŽΡ‰ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π²Π°ΠΌ 60 мс ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Или Π² Ρ‡Π΅ΠΌ ΡΡƒΡ‚ΡŒ Ρ‚ΠΎ Π±Ρ‹Π»Π°?

Π’Π΅ΡΡŒΠΌΠ° ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ всС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ², ΠΈ послС ΠΈΡ… срабатывания Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ clearTimeout, ΠΈΠ½Π°Ρ‡Π΅, послС срабатывания большого количСства Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠ² (

Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая вызываСтся Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ДСлаСтся это ΠΎΡ‡Π΅Π½ΡŒ просто, всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ послС миллисСкунд ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

Π’Π°ΠΊΠΎΠΉ синтаксис Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Firefox

Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°ΠΆΠ΅ Π² IE7-8

ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ setInterval(function(), 1000);

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *