При використанні setTimeout вам потрібно очиститиTimeout?


85

Хтось сказав мені, що коли ви використовуєте, setTimeoutви повинні очистити це за допомогою clearTimeout. Я можу зрозуміти до закінчення тайм-ауту, але чому після? Або це неправда?

Відповіді:


86

Це неправда - очищення тайм-ауту після його закінчення не шкодить, але це не потрібно.

Відповідно до специфікації :

Якщо дескриптор не ідентифікує запис у списку активних таймерів об'єкта WindowOrWorkerGlobalScope, для якого було викликано [clearTimeout], метод нічого не робить.

Іншими словами, це не-операція; нічого не відбувається, і помилка не буде викинута.


50

Насправді вам не потрібно використовувати clearTimeout, ви використовуєте його лише в тому випадку, якщо ви бажаєте скасувати вже встановлений тайм-аут, перш ніж це станеться.

Це, як правило , більш практично використовувати clearIntervalз , setIntervalтому що setIntervalзазвичай працює на невизначений термін.


15

clearTimeoutнеобхідний лише для скасування тайм-ауту. Після загорання тайм-ауту його можна спокійно залишити в спокої. clearIntervalє набагато більш типовим, щоб запобігти його продовженню нескінченно довго.


10

Немає причин очищати його після його завершення. Можливо, вашого друга переплутали з setInterval.


10

Ні, setTimeoutприпиняється показ після 1 дзвінка. Однак для того, щоб зупинитись setInterval, потрібно скористатися clearInterval. Якщо ви створюєте нескінченний цикл, setTimeoutтоді clearTimeoutможе бути використаний.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.