Можно ли дважды вызвать clearInterval на один и тот же идентификатор?

Это довольно распространено в java, но вы не можете сделать это на C #. Вы можете передавать функции или процедуры в качестве параметров:

public void myMethod(Action act)
{
    act();
}

myMethod( () => Console.WriteLine("yay") );

Существует несколько (общая) версия действия (процедура с параметрами и без возвращаемого значения) и Func (функции с параметрами и возвращаемым значением).

0
задан user5858 13 July 2018 в 05:02
поделиться

1 ответ

Возвращаемое значение setInterval - это уникальный номер, который вы используете для возврата к clearInterval. Это не объект с какой-либо дополнительной информацией.

, поэтому этот код if (typeof handle_register_after_pressed.sid !== "undefined" ) не будет работать, поскольку handle_register_after_pressed.sid не будет установлен в undefined или null после того, как вы сделаете clearInterval.

Если вы хотите узнать, очищен ли интервал, вам нужно создать собственное решение, подобное ниже,

function mySetInterval(fn, interval) {
    var id = setInterval(fn, interval);
    this.cleared = false;
    this.clear = function () {
        this.cleared = true;
        clearInterval(id);
    };
}

, а затем вызвать его следующим образом:

var t = new mySetInterval(function () {
    console.log('this is a test');
}, 5000);
console.log(t.cleared); // false
t.clear();
console.log(t.cleared); // true

Чтобы ответить на остальную часть вашего вопроса,

  1. да, идентификатор, возвращаемый из setTimeout и setInterval, уникален для времени жизни текущей веб-страницы. Кроме того, пул идентификаторов, используемых setInterval () и setTimeout (), является общим, что означает, что это постоянно увеличивающийся счетчик.
  2. Нет проблем, если вы вызываете clearInterval на один и тот же идентификатор. Когда генерируется идентификатор интервала, он не возвращается в пул идентификаторов даже после очистки этого интервала (до времени жизни текущей веб-страницы).
  3. Это не вызовет проблему, если вы вызываете clearInterval с недопустимыми параметрами, такими как null или undefined или 0. Он не генерирует исключение. вы в безопасности.
0
ответ дан Ajanth 17 August 2018 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: