Кто-то сказал мне, что когда вы используете setTimeout
, вы должны очистить его с помощью clearTimeout
. Я могу понять, до истечения тайм-аута, но почему после? Или это неверно?
При использовании setTimeout вам нужно clearTimeout?
Ответ 1
Это неправда - нет никакого вреда в очистке таймаута после его завершения, но это не обязательно.
В спецификация:
Если дескриптор не идентифицирует запись в списке активных таймеров объекта WindowOrWorkerGlobalScope, на котором вызывается [clearTimeout], метод ничего не делает.
Другими словами, это не-op; ничего не происходит, и никакая ошибка не будет выброшена.
Ответ 2
На самом деле вам не нужно использовать clearTimeout
, вы используете его только в том случае, если хотите отменить таймаут, который вы уже установили, прежде чем это произойдет.
Как правило, более практично использовать clearInterval
с setInterval
, потому что setInterval
обычно работает бесконечно.
Ответ 3
clearTimeout
требуется только для отмены таймаута. После срабатывания таймаута его можно безопасно оставить в покое. clearInterval
гораздо более типично необходимо для предотвращения его бесконечного продолжения.
Ответ 4
Нет причин для его устранения после его завершения. Возможно, ваш друг был смущен setInterval
.
Ответ 5
Нет, setTimeout
перестает работать после 1 вызова. Однако, чтобы остановить setInterval
, вы должны использовать clearInterval
. Если вы создаете бесконечный цикл setTimeout
, тогда можно использовать clearTimeout
.