Подтвердить что ты не робот

При использовании setTimeout вам нужно clearTimeout?

Кто-то сказал мне, что когда вы используете setTimeout, вы должны очистить его с помощью clearTimeout. Я могу понять, до истечения тайм-аута, но почему после? Или это неверно?

4b9b3361

Ответ 1

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

В спецификация:

Если дескриптор не идентифицирует запись в списке активных таймеров объекта WindowOrWorkerGlobalScope, на котором вызывается [clearTimeout], метод ничего не делает.

Другими словами, это не-op; ничего не происходит, и никакая ошибка не будет выброшена.

Ответ 2

На самом деле вам не нужно использовать clearTimeout, вы используете его только в том случае, если хотите отменить таймаут, который вы уже установили, прежде чем это произойдет.

Как правило, более практично использовать clearInterval с setInterval, потому что setInterval обычно работает бесконечно.

Ответ 3

clearTimeout требуется только для отмены таймаута. После срабатывания таймаута его можно безопасно оставить в покое. clearInterval гораздо более типично необходимо для предотвращения его бесконечного продолжения.

Ответ 4

Нет причин для его устранения после его завершения. Возможно, ваш друг был смущен setInterval.

Ответ 5

Нет, setTimeout перестает работать после 1 вызова. Однако, чтобы остановить setInterval, вы должны использовать clearInterval. Если вы создаете бесконечный цикл setTimeout, тогда можно использовать clearTimeout.