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

Что возвращает setTimeout?

Мне было любопытно, что возвращается setTimeout. Поэтому я сделал быстрый тест:

var thing = setTimeout(function(){},1);

И меня удивляет то, что он дал мне номер. 1351 Каждое время отличается.

Так оно действительно все, что он возвращает, это число? Так что я действительно могу это сделать?

clearTimeout(1351);

Очень запутанно...

4b9b3361

Ответ 1

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

Ответ 2

Вы можете представить его как timerID, которые однозначно идентифицируют таймер, так что вы можете reset на clearTimeout(timerID)

Ответ 3

Это может быть Object, я тестировал его с помощью node.js:

var sto = setTimeout(
    function(){console.log('ping');}, 
    1000
);

console.log(sto);

Вывод:

{ _idleTimeout: 1000,
  _idlePrev:
   { '0': [Function: listOnTimeout],
     _idleNext: [Circular],
     _idlePrev: [Circular],
     msecs: 1000 },
  _idleNext:
   { '0': [Function: listOnTimeout],
     _idleNext: [Circular],
     _idlePrev: [Circular],
     msecs: 1000 },
  _idleStart: 2413359232,
  _onTimeout: [Function],
  _repeat: false,
  domain:
   { domain: null,
     _events: { error: [Function] },
     _maxListeners: undefined,
     members: [] } }

Ответ 4

это идентификатор задачи (я предпочитаю думать, что это task_ID, а не Timeout_ID, который смущает всех).

Представьте, что вам нужно запустить функцию по умолчанию: "f_cup_of_tea" , чтобы любой нормальный человек в конечном итоге нуждался через 5 минут на вашем веб-сайте.:

tea_Task_ID = window.setTimeout(f_cup_of_tea, (5*60*1000), 15, 2);

как:   функция f_cup_of_tea (milk_ml, sugar) {....}

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

вы должны отменить вкусный "f_cup_of_tea" , запланированный в течение пяти минут... к счастью, javascript думает об этой проблеме, и вы можете использовать:

window.clearTimeout(tea_Task_ID);

(но он работает только в том случае, если "f_cup_of_tea" еще не запущен).

Далее вы можете запустить:

tequila_Task_ID = window.setTimeout(f_bad_tequila, (5*1000), 0);  // for in 5s, with zero ice...