angularjs定時(shí)任務(wù)的設(shè)置與清除示例
人們似乎常常將AngularJS中的$timeOut() $interval()函數(shù)看做是一個(gè)內(nèi)置的、無須在意的函數(shù)。但是,如果你忘記了$timeOut()$interval()的回調(diào)函數(shù)將會造成非常不好的影響,你可能會因此遇到代碼莫名其妙的出現(xiàn)問題,或者無端拋出一個(gè)錯(cuò)誤甚至是一遍一遍的重復(fù)對的你的服務(wù)器進(jìn)行$http請求這些詭異的情形。管理好你的$timeOut/$interval定時(shí)器的小技巧就是在$destory事件中將它們?nèi)∠?/p>
和JavaScript中原生的setTimeout()以及setInterval()函數(shù)不同,AngularJS中的$timeOut()函數(shù)會返回一個(gè)promise。和其他的promise一樣,你可以綁定$timeOut的resolved和rejected時(shí)間。然而更重要的是,你可以通過將這個(gè)promise傳遞給$timeOut.cancel()方法來取消掉潛在的定時(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將會在scope中觸發(fā)$destory事件。這讓我們可以有機(jī)會來cancel任何潛在的定時(shí)器。
$scope.$on('$destroy',function(){ $interval.cancel(timeout_upd); })
我的頁面是這種格式的,如下圖所示。angularjs在“實(shí)時(shí)數(shù)據(jù)監(jiān)測”這個(gè)模塊設(shè)置了一個(gè)定時(shí)任務(wù),當(dāng)我點(diǎn)擊菜單欄到別的頁面時(shí),默認(rèn)的這個(gè)定時(shí)任務(wù)還在執(zhí)行,占用很多資源。所以必須得清除這個(gè)定時(shí)任務(wù),原生的清除window.clearInterval(timeout_upd);是不管用的,必須用angularjs自帶的清除方法,如上代碼所示。
注意:angularjs中設(shè)置了定時(shí)任務(wù)之后,必須清除定時(shí)任務(wù),不然angularjs會在離開這個(gè)controller后,仍然會執(zhí)行這個(gè)定時(shí)任務(wù)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- AngularJs定時(shí)器$interval 和 $timeout詳解
- Angular.js中定時(shí)器循環(huán)的3種方法總結(jié)
- AngularJS定時(shí)器的使用與移除操作方法【interval與timeout】
- Angularjs 雙向綁定時(shí)字符串的轉(zhuǎn)換成數(shù)字類型的問題
- 詳解Angular.js數(shù)據(jù)綁定時(shí)自動(dòng)轉(zhuǎn)義html標(biāo)簽及內(nèi)容
- AngularJS實(shí)現(xiàn)頁面定時(shí)刷新
- angular2倒計(jì)時(shí)組件使用詳解
- ionic+AngularJs實(shí)現(xiàn)獲取驗(yàn)證碼倒計(jì)時(shí)按鈕
- AngularJS 支付倒計(jì)時(shí)功能實(shí)現(xiàn)思路
- Angular實(shí)現(xiàn)的簡單定時(shí)器功能示例
相關(guān)文章
Angularjs 實(shí)現(xiàn)移動(dòng)端在線測評效果(推薦)
這篇文章主要介紹了Angularjs 實(shí)現(xiàn)移動(dòng)端在線測評效果,需要的朋友可以參考下2017-04-04AngularJS 中ui-view傳參的實(shí)例詳解
這篇文章主要介紹了AngularJS 中ui-view傳參的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08Angularjs驗(yàn)證用戶輸入的字符串是否為日期時(shí)間
這篇文章主要介紹了Angularjs驗(yàn)證用戶輸入的字符串是否為日期時(shí)間,需要的朋友可以參考下2017-06-06Angular.JS讀取數(shù)據(jù)庫數(shù)據(jù)調(diào)用完整實(shí)例
這篇文章主要介紹了Angular.JS讀取數(shù)據(jù)庫數(shù)據(jù)調(diào)用,結(jié)合完整實(shí)例形式分析了AngularJS使用$http.get方法與后臺php交互讀取數(shù)據(jù)庫數(shù)據(jù)相關(guān)操作技巧,需要的朋友可以參考下2019-07-07AngularJs學(xué)習(xí)第五篇從Controller控制器談?wù)?scope作用域
這篇文章主要介紹了AngularJs(五)從Controller控制器談?wù)?scope作用域 的相關(guān)資料,需要的朋友可以參考下2016-06-06AngularJS中如何使用$parse或$eval在運(yùn)行時(shí)對Scope變量賦值
這篇文章主要介紹了AngularJS中如何使用$parse或$eval在運(yùn)行時(shí)對Scope變量賦值的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-01-01詳解如何在Angular應(yīng)用中發(fā)起HTTP?302 redirect
這篇文章主要介紹了如何在Angular應(yīng)用中發(fā)起HTTP 302 redirect詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12