年來,使用setInterval條件輪詢確實很有用。無論是在客戶端還是服務器端進行輪詢,對特定條件做出反應都有助于改善用戶體驗。我最近需要完成的一項任務要求我setInterval立即執行然后繼續執行。
常規和最佳方法是在調用初始`setInterval之前,我們就執行一下自定義的函數
myFunction();
setInterval ( myFunction , 1000 ) ;
如果你真的想隔離對 的函數調用setInterval,你可以使用這個返回自身的自執行函數的技巧:
setInterval ( function myFunction ( ) {
return myFunction ;
} ( ) , 3000 )
這種模式的缺點是它會導致維護問題,下一個開發人員不了解發生了什么。
維護是成為一名優秀工程師的重要組成部分,因此至少應該需要注釋或輔助函數形式的文檔。如果你真的想要一個自動執行的setInterval,你有它!
JS有兩種定時器分別是setTimeout()和setInterval(),這兩個區別就是setTimeout()是一次性的定時器,而setInterval()是循環的定時器。
js中的定時器精度并不準確,這是因為JS中的定時器僅僅是將執行的語句加入隊列,這樣在定時器之前的語句若是在循環或者有延遲的情況下,定時器也會相應的延后。
上面提到了js中的定時器精度不準確的原因,同樣的這也會導致使用setTimeInterVal語句會卡頓,其不管語句是否執行完成,都會在時間點執行語句。
實際上大多數的場景中,只是想要定時之后執行完語句再等待定時的觸發,完全可以使用setTimeOut搭配clearTimeout這樣在使用定時器之后進行消除再加一個循環,總和性能比單純的setTimeInterVal要好上不少。
由于歷史原因,兩種定時器都支持eval的效果,可以執行字符串形式的語句。
如果將定時為0秒后執行,語句并不會立刻執行,而是將其放在隊列最后,等待所有語句執行完成之后,再立刻執行。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。