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