人們似乎常常將AngularJS中的$timeOut() $interval()函數(shù)看做是一個(gè)內(nèi)置的、無(wú)須在意的函數(shù)。但是,如果你忘記了$timeOut()$interval()的回調(diào)函數(shù)將會(huì)造成非常不好的影響,你可能會(huì)因此遇到代碼莫名其妙的出現(xiàn)問(wèn)題,或者無(wú)端拋出一個(gè)錯(cuò)誤甚至是一遍一遍的重復(fù)對(duì)的你的服務(wù)器進(jìn)行$http請(qǐng)求這些詭異的情形。管理好你的$timeOut/$interval定時(shí)器的小技巧就是在$destory事件中將它們?nèi)∠?/p>
成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷、網(wǎng)站重做改版、賀蘭網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為賀蘭等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
和JavaScript中原生的setTimeout()以及setInterval()函數(shù)不同,AngularJS中的$timeOut()函數(shù)會(huì)返回一個(gè)promise。和其他的promise一樣,你可以綁定$timeOut的resolved和rejected時(shí)間。然而更重要的是,你可以通過(guò)將這個(gè)promise傳遞給$timeOut.cancel()方法來(lái)取消掉潛在的定時(shí)器。
設(shè)置定時(shí)任務(wù),給定時(shí)任務(wù)起一個(gè)名字time_upd,為的是方便清理的時(shí)候直接調(diào)用名稱。
var timeout_upd = $interval($scope.upd_data ,6000);
注意:設(shè)置的時(shí)候$interval(fn ,time);第一個(gè)參數(shù)fn 不能寫“()”,只能寫$scope.方法名稱。第二個(gè)參數(shù)是定時(shí)執(zhí)行的時(shí)間間隔,單位為毫秒。
清除定時(shí)任務(wù),AngularJS將會(huì)在scope中觸發(fā)$destory事件。這讓我們可以有機(jī)會(huì)來(lái)cancel任何潛在的定時(shí)器。
$scope.$on('$destroy',function(){ $interval.cancel(timeout_upd); })
我的頁(yè)面是這種格式的,如下圖所示。angularjs在“實(shí)時(shí)數(shù)據(jù)監(jiān)測(cè)”這個(gè)模塊設(shè)置了一個(gè)定時(shí)任務(wù),當(dāng)我點(diǎn)擊菜單欄到別的頁(yè)面時(shí),默認(rèn)的這個(gè)定時(shí)任務(wù)還在執(zhí)行,占用很多資源。所以必須得清除這個(gè)定時(shí)任務(wù),原生的清除window.clearInterval(timeout_upd);是不管用的,必須用angularjs自帶的清除方法,如上代碼所示。
注意:angularjs中設(shè)置了定時(shí)任務(wù)之后,必須清除定時(shí)任務(wù),不然angularjs會(huì)在離開這個(gè)controller后,仍然會(huì)執(zhí)行這個(gè)定時(shí)任務(wù)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
分享文章:angularjs定時(shí)任務(wù)的設(shè)置與清除示例
分享路徑:http://m.rwnh.cn/article44/jdipee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、網(wǎng)站營(yíng)銷、電子商務(wù)、App設(shè)計(jì)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)