setInterval(this.Animate(), this.speed);
Ожидается, что этот запуск будет выполняться каждый раз. Да, но браузеры запускают его только один раз. Каковы возможные причины этого?Javascript setInterval работает только один раз
setInterval(this.Animate(), this.speed);
Ожидается, что этот запуск будет выполняться каждый раз. Да, но браузеры запускают его только один раз. Каковы возможные причины этого?Javascript setInterval работает только один раз
Если Animate
является производной функцией от прототип, вы должны будете использовать:
setInterval(this.Animate.bind(this), this.speed);
+1 Хорошая возможность того, что текущий' this' должен быть сохранен как вызывающий контекст. –
Выполните следующие действия:
setInterval(this.Animate, this.speed);
Вы выполняете функцию вместо того, присваивая ссылку на функцию, которая будет выполнен в определенном интервале ...
Давайте посмотрим на код
setInterval(this.Animate(), this.speed);
Что это значит, сразу же запустите функцию this.Animate()
и сохраните то, что когда-либо оно вызывается.
То, что вы хотите сделать, это создать замыкание
var that = this;
setInterval(function(){ that.Animate() }, this.speed);
that
сохраняет текущую область.
Попробуйте запустить функцию без скобок, когда вы помещаете скобки всегда вызывает функцию вместо того, чтобы передать его, что это то, что вы хотите здесь:
setInterval(this.Animate, this.speed);
Если он все еще не работает, то вам должен отлаживать и выяснять, какова область для этого, так как «это» может измениться. Вы можете сделать это, добавив точку останова в отладчик JS вашего браузера. Кроме того, вы можете попробовать это, чтобы избежать проблемы рамки с «применить»
var animate = this.animate.apply(this)
setInterval(animate, this.speed);
p.s: Это может быть хорошим выбором, чтобы избежать setInterval для анимации, как они могли бы стоять в очереди, а затем огонь сразу. Вместо этого вызовите setTimedout один раз и снова в конце функции (this.Animate), чтобы создать цикл.
Если вы ищете JQuery обновить сценарий, попробуйте:
refreshId = setInterval(function() {
// Events or Actions
}, 5000);
Если вы когда-нибудь хотите приостановить или остановить это, используйте четкий интервал: clearInterval(refreshId);
.
Как мы определяем 'u' –
Указатель на тот же класс ... –