$q

$q服務

q服務是AngularJS中自己封裝實現(xiàn)的一種Promise實現(xiàn)怠益,相對與Kris Kwal's Q要輕量級的多炎码。
先介紹一下$q常用的幾個方法:

defer() 創(chuàng)建一個deferred對象噩凹,這個對象可以執(zhí)行幾個常用的方法枪向,比如resolve,reject,notify等
all() 傳入Promise的數(shù)組,批量執(zhí)行,返回一個promise對象
when() 傳入一個不確定的參數(shù)扎阶,如果符合Promise標準躲胳,就返回一個promise對象。
在Promise中畜眨,定義了三種狀態(tài):等待狀態(tài)昼牛,完成狀態(tài),拒絕狀態(tài)康聂。
關于狀態(tài)有幾個規(guī)定:

1 狀態(tài)的變更是不可逆的
2 等待狀態(tài)可以變成完成或者拒絕
defer()方法

在$q中贰健,可以使用resolve方法,變成完成狀態(tài)恬汁;使用reject方法伶椿,變成拒絕狀態(tài)。

<html ng-app="myApp">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script>
</head>
<body>
    <div ng-controller="myctrl">
        {{test}}
    </div>
    <script type="text/javascript">
         var myAppModule = angular.module("myApp",[]);
         myAppModule.controller("myctrl",["$scope","$q",function($scope, $ q ){
            $scope.test = 1;//這個只是用來測試angularjs是否正常的氓侧,沒其他的作用

            var defer1 = $q.defer();
            var promise1 = defer1.promise;

            promise1
            .then(function(value){
                console.log("in promise1 ---- success");
                console.log(value);
            },function(value){
                console.log("in promise1 ---- error");
                console.log(value);
            },function(value){
                console.log("in promise1 ---- notify");
                console.log(value);
            })
            .catch(function(e){
                console.log("in promise1 ---- catch");
                console.log(e);
            })
            .finally(function(value){
                console.log('in promise1 ---- finally');
                console.log(value);
            });

            defer1.resolve("hello");
            // defer1.reject("sorry,reject");
         }]);
    </script>
</body>
</html>

其中defer()用于創(chuàng)建一個deferred對象脊另,defer.promise用于返回一個promise對象,來定義then方法约巷。then中有三個參數(shù)偎痛,分別是成功回調(diào)、失敗回調(diào)独郎、狀態(tài)變更回調(diào)踩麦。

all()方法

這個all()方法枚赡,可以把多個primise的數(shù)組合并成一個。當所有的promise執(zhí)行成功后谓谦,會執(zhí)行后面的回調(diào)贫橙。回調(diào)中的參數(shù)反粥,是每個promise執(zhí)行的結果卢肃。
當批量的執(zhí)行某些方法時,就可以使用這個方法才顿。

   var funcA = function(){
                console.log("funcA");
                return "hello,funA";
            }
            var funcB = function(){
                console.log("funcB");
                return "hello,funB";
            }
            $q.all([funcA(),funcB()])
            .then(function(result){
                console.log(result);
            });
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莫湘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子娜膘,更是在濱河造成了極大的恐慌逊脯,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竣贪,死亡現(xiàn)場離奇詭異军洼,居然都是意外死亡,警方通過查閱死者的電腦和手機演怎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門匕争,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爷耀,你說我怎么就攤上這事甘桑。” “怎么了歹叮?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵跑杭,是天一觀的道長。 經(jīng)常有香客問我咆耿,道長德谅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任萨螺,我火速辦了婚禮窄做,結果婚禮上,老公的妹妹穿的比我還像新娘慰技。我一直安慰自己椭盏,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布吻商。 她就那樣靜靜地躺著掏颊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艾帐。 梳的紋絲不亂的頭發(fā)上乌叶,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天改化,我揣著相機與錄音,去河邊找鬼枉昏。 笑死,一個胖子當著我的面吹牛揍鸟,可吹牛的內(nèi)容都是我干的兄裂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼阳藻,長吁一口氣:“原來是場噩夢啊……” “哼晰奖!你這毒婦竟也來了?” 一聲冷哼從身側響起腥泥,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤匾南,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蛔外,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛆楞,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年夹厌,在試婚紗的時候發(fā)現(xiàn)自己被綠了豹爹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡矛纹,死狀恐怖臂聋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情或南,我是刑警寧澤孩等,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站采够,受9級特大地震影響肄方,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吁恍,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一扒秸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冀瓦,春花似錦伴奥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至感局,卻和暖如春尼啡,著一層夾襖步出監(jiān)牢的瞬間暂衡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工崖瞭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狂巢,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓书聚,卻偏偏與公主長得像唧领,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雌续,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 標簽: AngularJS API 中文 -ng模塊下的服務 $q官方文檔 這是一個能幫助你異步地運行函數(shù)斩个,并且在...
    binyu1231閱讀 1,186評論 0 2
  • 什么是Promise Javascript中異步的實現(xiàn)方式有很多,延時函數(shù)驯杜、回調(diào)函數(shù)受啥、以及es6新增的生成器函數(shù),...
    DC_er閱讀 7,290評論 2 3
  • 本文適用的讀者 本文寫給有一定Promise使用經(jīng)驗的人鸽心,如果你還沒有使用過Promise滚局,這篇文章可能不適合你,...
    HZ充電大喵閱讀 7,296評論 6 19
  • Promise 對象 Promise 的含義 Promise 是異步編程的一種解決方案再悼,比傳統(tǒng)的解決方案——回調(diào)函...
    neromous閱讀 8,698評論 1 56
  • 一直在家被精心呵護的孩子要上幼兒園了核畴,她能很快適應嗎?在幼兒園會開心嗎冲九?會不會每天哭著喊著不去谤草?像很多媽媽一樣,在...
    林悠然PET閱讀 834評論 0 7