необходимо ли каждый раз очищать переменную тайм-аута - PullRequest
4 голосов
/ 30 ноября 2011

В моем приложении я использую множество функций setTimeout, поэтому я боюсь, что это вызовет проблемы с производительностью:

setTimeout(function(){
  // do something
},0);

И я обнаружил, что люди используют этот способ:

var t=setTimeout(function(){
  // do something
  clearTimeout(t);
});

Интересно, нужно ли это?

Ответы [ 4 ]

1 голос
/ 30 ноября 2011

только если вы хотите отменить его до того, как это произойдет - что вы никогда не сможете остановить с задержкой 0 ...

1 голос
/ 30 ноября 2011

Нет, это не обязательно. Используйте clearTimeout(), чтобы отменить тайм-аут, который все еще существует в будущем (то есть до , чтобы не произошло).

Сброс таймаута после того, как это произошло (или пока это происходит), не имеет положительного эффекта.

Этого будет достаточно.

setTimeout(function(){
  // do something
},0);
1 голос
/ 30 ноября 2011

Нет, это не так. Переменная нужна только в том случае, если вам нужно отменить время ожидания до того, как оно произойдет. Вызов clearTimeout изнутри обратного вызова не имеет никакого эффекта, так как больше нет времени ожидания для остановки.

1 голос
/ 30 ноября 2011

Нет, объект будет уничтожен автоматически (по крайней мере, так должно быть). Вам нужно позвонить clearTimeout, когда вам нужно удалить уже установленное время ожидания.

Пример: вы установили тайм-аут на 5 секунд при наведении курсора на некоторый элемент, но пользователь перемещает курсор от элемента до истечения времени ожидания, поэтому вам нужно удалить уже инициализированный тайм-аут.

...