JavaScript: Как я могу проверить свойства таймера? - PullRequest
0 голосов
/ 12 августа 2010

Если у меня есть следующий код:

var myfunc = function() { alert('wow'); };
var t=setTimeout(myfunc, 300);

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

Ответы [ 2 ]

1 голос
/ 12 августа 2010

Нет, не может быть сделано.

Вместо этого вы можете отслеживать их по-другому, примерно так:

var timeouts = [{
  fn: myfunc,
  timeout: 300
}];

for(var i = 0; i < timeouts.length; i++){
  timeouts[i].id = window.setTimeout(timeouts[i].fn, timeouts[i].timeout);
}
0 голосов
/ 12 августа 2010

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

function Timer(callback, timeout) {
  this.callback = callback;
  this.timeout = timeout;
  this.id = window.setTimeout(callback, timeout);
}

Timer.prototype.cancel = function() {
  window.clearTimeout(this.id);
}

Timer.prototype.fire = function() {
  this.cancel();
  this.callback();
}

Затем вы просто создаете таймеры иполучить доступ к их свойствам, как это:

t = new Timer(myfunc, 300);
alert(t.timeout);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...