簡體   English   中英

Javascript setInterval僅運行一次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM