區(qū)別:
setTimeOut(表達(dá)式,時間)=》是指延遲指定時間后才調(diào)用函數(shù)侈玄,調(diào)用次數(shù)僅一次撒汉,但可以根據(jù)條件反復(fù)調(diào)用setTimeOut實現(xiàn)循環(huán)湘今。
setInterVal(表達(dá)式,時間)=》是指每隔指定的時間就執(zhí)行表達(dá)式返劲,次數(shù)不為一塞淹,好比設(shè)置時間為4秒窟蓝,每隔4秒就執(zhí)行眨眼這個操作,循環(huán)操作下去窖铡。
業(yè)務(wù)場景的區(qū)別:
setTimeOut用于延遲執(zhí)行某方法或功能疗锐。
setInterVal一般用于刷新表單坊谁,對于一些表單的假實時指定時間刷新同步。
注意點:
盡量不要用setInterVal()
原因:
1滑臊、setInterVal()無視代碼錯誤
setInterVal有個討厭的習(xí)慣口芍,即對自己調(diào)用的代碼是否報錯這件事漠不關(guān)心。換句話說雇卷,如果setInterVal執(zhí)行的代碼由于某種原因出了錯鬓椭,它還會持續(xù)不斷地調(diào)用該代碼。
2关划、setInterVal無視網(wǎng)絡(luò)延遲
假設(shè)你每隔一段時間就請求一次服務(wù)器小染,看看有沒有新數(shù)據(jù)。而由于某些原因(如服務(wù)器過載贮折、臨時斷網(wǎng)裤翩、流量劇增、用戶帶寬受限等)调榄,你的請求要花的時間遠(yuǎn)比你想象的要長踊赠。但setInterVal不在乎。它仍然會按定時持續(xù)不斷地觸發(fā)請求每庆,最終你的客戶端網(wǎng)絡(luò)隊列會塞滿ajax調(diào)用筐带。
3、setInterVal不保證執(zhí)行
與setTimeOut不同缤灵,你并不能保證到了時間間隔伦籍,代碼就準(zhǔn)能執(zhí)行。如果你調(diào)用的函數(shù)需要花很長時間才能完成腮出,那那某些調(diào)用會被直接忽略帖鸦。