AngularJs $interval 和 $timeout

我的理解:$interval 就是一個循環(huán)函數(shù),每個多長時間執(zhí)行一次;

**interval** window.setInterval的Angular包裝形式。Fn是每次延遲時間后被執(zhí)行的函數(shù)。 間隔函數(shù)的返回值是一個承諾。這個承諾將在每個間隔刻度被通知,并且到達(dá)規(guī)定迭代次數(shù)后被取消,如果迭代次數(shù)未定義,則無限制的執(zhí)行。通知的值將是運行的迭代次數(shù)。取消一個間隔,調(diào)用intreval.cancel(promise)。
備注:當(dāng)你執(zhí)行完這項服務(wù)后應(yīng)該把它銷毀。特別是當(dāng)controller或者directive元素被銷毀時而interval未被銷毀。你應(yīng)該考慮到在適當(dāng)?shù)臅r候取消interval事件。 **使用**:interval(fn,delay,[count],[invokeApply],[Pass]);
fn:一個將被反復(fù)執(zhí)行的函數(shù)。
delay:每次調(diào)用的間隔毫秒數(shù)值。
count:循環(huán)次數(shù)的數(shù)值,如果沒設(shè)置,則無限制循環(huán)。
invokeApply:如果設(shè)置為false,則避開臟值檢查,否則將調(diào)用apply。 Pass:函數(shù)的附加參數(shù)。 **方法**: ***cancel(promise);*** 取消與承諾相關(guān)聯(lián)的任務(wù)。 promise:interval函數(shù)的返回值。
使用代碼:

<pre> (function () {
angular.module("Demo", [])
.controller("testCtrl",["interval",testCtrl]); function testCtrl(interval){ var toDo = function () {
console.log("Hello World");
};
$interval(toDo, 3000, 10);
};
}());</pre>

$timeout

window.setTimeout的Angular包裝形式。Fn函數(shù)包裝成一個try/catch塊,代表$exceptionHandler服務(wù)里的任何異常。

timeout函數(shù)的返回值是一個promise,當(dāng)?shù)竭_(dá)設(shè)置的超時時間時,這個承諾將被解決,并執(zhí)行timeout函數(shù)。

需要取消timeout,需要調(diào)用$timeout.cancel(promise);

使用: $timeout(fn,[delay],[invokeApply]);

fn:一個將被延遲執(zhí)行的函數(shù)。

delay:延遲的時間(毫秒)。

invokeApply:如果設(shè)置為false,則跳過臟值檢測,否則將調(diào)用$apply。

方法

cancel(promise);

取消與承諾相關(guān)聯(lián)的任務(wù)。這個的結(jié)果是,承諾將被以摒棄方式來解決。

promise:$timeout函數(shù)返回的承諾。

<pre> (function () {
angular.module("Demo", [])
.controller("testCtrl",["timeout",testCtrl]); function testCtrl(timeout){ var toDo = function () {
console.log("Hello World");
};
$timeout(toDo,5000)
};
}());</pre>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容