Как тайм-ауты представлены в JavaScript? - PullRequest
2 голосов
/ 22 июня 2011

Когда я вызываю установленное время ожидания, он возвращает номер, например,

> setTimeout(function(){ console.log('done'); },1000);
4431
"done"

Я знаю, что могу использовать этот номер для вызова clearTimeout(), но что этот номер обозначает внутри?

Ответы [ 4 ]

6 голосов
/ 22 июня 2011

Неважно, что он представляет. Это может быть адрес в памяти, или индекс в массиве, или национальный ID # программиста, который написал интерпретатор + смещение.

Тебе все равно. Тебе лучше пофиг . Что бы это ни соответствовало сегодняшнему дню, внутренне в одной конкретной среде браузера / JS, оно вполне может означать что-то еще завтра где-нибудь еще.

Все, что вам нужно знать, это то, что это число соответствует вашему таймеру. Если позже вам понадобится что-то сделать с таймером, вам понадобится этот номер, так что сохраните его. Когда таймер мертв, выбросьте его и никогда больше не думайте об этом.


Если вас интересуют некоторые мелкие детали, см. спецификацию для списка активных тайм-аутов - не требуется, чтобы число (дескриптор) представляло что-либо внутри. просто то, что он может быть использован для надежной идентификации конкретного таймера.

Если вас интересуют некоторые действительно мельчайшие подробности, загрузите исходный код вашего любимого браузера и отправляйтесь в город ...

1 голос
/ 22 июня 2011

Я думаю, что это зависит от используемого движка JS, следовательно, от используемого браузера. Из старых вопросов я знаю, что каждый браузер использует свой способ перечисления возвращенных идентификаторов.

0 голосов
/ 22 июня 2011

Я думаю, что обычный способ сделать это - установить переменную, равную выражению setTimeout, например myTO = setTimeout (...), а затем очистить ее с помощью clearTimeout (myTO).

0 голосов
/ 22 июня 2011

Это идентификатор, представляющий способ отслеживания события.

...