下面我們通過講解$q的api讓你更多的了解promise非同步程式設計模式。$q是做為angularjs的乙個服務而存在的,只是對promise非同步程式設計模式的乙個簡化實現版,原始碼中剔除注釋實現**也就二百多行,下面開始介紹$q的api。
defer物件(延遲物件)可以通$q.defer()獲取,下面是defer物件的api:
方法:
resolve(value):向promise物件非同步執行體傳送訊息告訴他我已經成功完成任務,value即為傳送的訊息。
reject(value):向promise物件非同步執行體傳送訊息告訴他我已經不可能完成這個任務了,value即為傳送的訊息。
notify(value):向promise物件非同步執行體傳送訊息告訴他我現在任務完成的情況,value即為傳送的訊息。
這些訊息傳送完promise會呼叫現有的**函式。
屬性:
promise即與這個defer物件的承諾物件。
從上可以看出defer主要是用來傳送訊息的。
promise物件可以通過defer.promise獲取,下面是promise物件的api:
方法:
then(successcallback,errorcallback,notifycallback):引數為不同訊息下的不同**函式,defer傳送不同的訊息執行不同的**函式,訊息作為這些**函式的引數傳遞。返回值為回乙個promise物件為支援鏈式呼叫而存在。當第乙個defer物件傳送訊息後,後面的promise對應的defer物件也會傳送訊息,但是傳送的訊息不一樣,不管第乙個defer物件傳送的是reject還是resolve,第二個及其以後的都是傳送的resolve,訊息是可傳遞的。
catch(errorcallback):then(null,errorcallback)的縮寫。
finally(callback):相當於then(callback,callback)的縮寫,這個finally中的方法不接受引數,卻可以將defer傳送的訊息和訊息型別成功傳遞到下乙個then中。
方法:
defer():用來生成乙個延遲物件 var defer =$q.defer();
reject():引數接收錯誤訊息,相當於在**函式中丟擲乙個異常,然後在下乙個then中呼叫錯誤的**函式。
all():引數接收為乙個promise陣列,返回乙個新的單一promise物件,當這些promise物件對應defer物件全部解決這個單一promise物件才會解決,當這些promise物件中有乙個被reject了,這個單一promise同樣的被reject了。
when():接收第乙個引數為乙個任意值或者是乙個promise物件,其他3個同promise的then方法,返回值為乙個promise物件。第乙個引數若不是promise物件則直接執行success**且訊息為這個物件,若為promise那麼返回的promise其實就是對這個promise型別的引數的乙個包裝而已,被傳入的這個promise對應的defer傳送的訊息,會被我們when函式返回的promise物件所接收到。
q服務的使用
1.建立乙個service,去伺服器讀取資料 q 是內建服務,所以可以直接使用 return success function data,status,headers,config error function data,status,headers,config return deferred.p...
簡訊api服務
簡訊api服務 北京暢遊互聯科技 簡訊api服務可以把寫好的簡訊模板一次發給多個指定手機號碼.簡訊介面 url 支援格式 json http請求方式 get post 引數說明 名稱型別 必填說明 mobile string 是接收簡訊的手機號碼 tpl id int 是 簡訊模板id,請參考個人中...
簡訊API服務
簡訊api服務 簡訊服務是由haoservice提供的綜合性簡訊服務,通過該服務您可以給指定的手機發簡訊 1 簡訊api服務 2 查詢剩餘條數 3 接收狀態報告 4 簡訊簡易傳送介面 請求引數 名稱型別必填說明 keystring 是api key mobilestring 是接收簡訊的手機號碼 t...