[英]Javascript setInterval runs only one time
setInterval(this.Animate(), this.speed);
預計將在每this.speed時間運行一次。 是的,但是瀏覽器只運行一次。 可能的原因是什么?
如果Animate
是原型的派生函數,則必須使用:
setInterval(this.Animate.bind(this), this.speed);
嘗試在不帶括號的情況下運行函數,當您放入括號時,它總是調用函數而不是傳遞函數,這就是您想要的:
setInterval(this.Animate, this.speed);
如果仍然不起作用,則應調試並找出“ this”的范圍,因為“ this”可能會更改。 您可以通過在瀏覽器的JS調試器中添加斷點來實現。 另外,您可以嘗試使用“ apply”來避免范圍問題
var animate = this.animate.apply(this)
setInterval(animate, this.speed);
ps:避免setInterval進行動畫處理可能是一個不錯的選擇,因為它們可能會排隊然后立即觸發。 而是在函數(this.Animate)的最后一次調用setTimedout,以創建一個循環。
請執行下列操作:
setInterval(this.Animate, this.speed);
您正在執行該函數,而不是為要按一定間隔執行的函數分配引用...
讓我們看看您的代碼
setInterval(this.Animate(), this.speed);
它的意思是立即運行this.Animate()
函數並存儲返回的所有內容。
您想要做的是創建一個閉合
var that = this;
setInterval( function(){ that.Animate() }, this.speed);
在that
維持目前的范圍。
如果您正在尋找JQuery刷新腳本,請嘗試:
refreshId = setInterval(function() {
// Events or Actions
}, 5000);
如果要暫停或停止此操作,請使用清除間隔: clearInterval(refreshId);
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.