[問題] 關於setInterval函式

看板Flash作者 (Teddy)時間17年前 (2009/04/14 23:55), 編輯推噓4(4012)
留言16則, 2人參與, 最新討論串1/1
想請問一下關於setInterval的時間間隔函數有沒有時間的上限? 因為我可能需要每30min.1hr.3hr執行一次 所以想問問看有沒有人知道? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.177.159

04/15 00:10, , 1F
3hr=180min=10800s=10800000ms
04/15 00:10, 1F

04/15 00:10, , 2F
Number可用53bits來表示整數部分
04/15 00:10, 2F

04/15 00:11, , 3F
2^53遠大於10800000,所以請放心用吧
04/15 00:11, 3F

04/15 00:13, , 4F
事實上,2^53ms等於104249991天
04/15 00:13, 4F

04/15 00:13, , 5F
所以你可以放104249991天都沒問題
04/15 00:13, 5F

04/15 01:16, , 6F
再問一個問題,因為如果用變數更改setInterval的interval
04/15 01:16, 6F

04/15 01:17, , 7F
它執行的速率還是不變,要怎麼修改setInerval的寫法才行呢
04/15 01:17, 7F

04/15 01:44, , 8F
無解,除非用clearInterval消除連續呼叫,然後再開一個
04/15 01:44, 8F

04/15 01:44, , 9F
如果你是用AS3可以用Timer class,他有個delay property
04/15 01:44, 9F

04/15 01:45, , 10F
Timer class應該是拿來取代setInterval用的
04/15 01:45, 10F

04/15 01:45, , 11F
因為Time class的API設計得很好用,setInterval相對死板
04/15 01:45, 11F

04/15 01:47, , 12F
其實如果你只是要30min, 1hr, 或3hr
04/15 01:47, 12F

04/15 01:48, , 13F
其實還是可以用setInterval,就把它設成30min叫一次
04/15 01:48, 13F

04/15 01:49, , 14F
弄個變數N,函式設計成"呼叫次數是N的倍數才執行某事"
04/15 01:49, 14F

04/15 01:49, , 15F
這樣1hr就是N = 2, 3hr就是N = 6
04/15 01:49, 15F

04/15 02:12, , 16F
喔喔 懂了懂了 感謝CJ大
04/15 02:12, 16F
文章代碼(AID): #19vB7tfO (Flash)