Кто-то сказал мне, что когда вы используете 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.