angular中的 q服務例項

2022-01-16 19:45:34 字數 2026 閱讀 3922

用於理解$q服務

參考:和其它框架一樣, ng 提供了廣義的非同步**管理的機制。 $http 服務是在其之上封裝出來的。這個機制就是 ng 的 $q 服務。

不過 ng 的這套機制總的來說實現得比較簡單,按官方的說法,夠用了。

使用的方法,基本上是:

var testctrl = function($q),

function(data));

'xx');

defer.resolve('xx');

}

了解了上面的東西,再分別看 $q , deferred , promise 這三個東西。

$q 有四個方法:

$q.all() 方法適用於併發場景很合適:

$q.reject() 方法是在你捕捉異常之後,又要把這個異常在**鏈中傳下去時使用:

要理解這東西,先看看 promise 的鏈式**是如何運作的,看下面兩段**的區別:

var defer = $q.defer();

var p = defer.promise;

p.then(

function(data)

);p.then(

function(data)

);defer.resolve('123');

var defer = $q.defer();

var p = defer.promise;

var p2 = p.then(

function(data)

);p2.then(

function(data)

);defer.resolve('123');

從模型上看,前者是「併發」,後者才是「鏈式」。

而 $q.reject() 的作用就是觸發後鏈的 error **:

var defer = $q.defer();

var p = defer.promise;

p.then(

function(data),

function(data)

).then(

function(data),

function(data)

)defer.reject('123');

最後的 $q.when() 是把資料封裝成 promise 物件:

var p = $q.when(0, function(data),

function(data));

p.then(

function(data),

function(data)

);

deferred 物件有兩個方法乙個屬性。

var defer = $q.defer();

var promise = defer.promise;

promise.then(function(data),

function(data));

'xx');

defer.resolve('xx');

promise 物件只有 then() 乙個方法,註冊成功**函式和失敗**函式,再返回乙個promise 物件,以用於鏈式呼叫。

下面是自己寫的例子

}//觸發premise的success

demo().then(function

(data))

}])demo

Remoting服務例項

由於最近開始接觸remoting專案,所以特意學習了一下,寫了一篇簡要的例項分享,加深一遍對remoting服務框架的理解,個人覺得它的原理就是分布式的呼叫遠端主機上的類庫,在不同機器上的應用程式域之間建立通道,使用可序列化的遠端物件傳遞資料。github鏈結 1.遠端物件 public class...

Angular通訊 q服務和promise物件

promise 約定 promise 是乙個物件,表示在未來時間點會發生的某件事情,約定可以是三種狀態之一 等待 完成或拒絕。約定將從等待狀態開始,然後可以轉換為完成或者拒絕狀態,一旦約定完成或者被拒絕,它就無法再改變狀態。例如我們的 http服務返回的就是乙個經過包裝的promise物件。可以看到...

Python的HTTP服務例項

1 前言 今天需要實現乙個pyhton的http服務,與web的js進行交換。2 例項 支援head get post方法,將引數轉換為json格式,返回結果以json字串返回。使用nodejs預設測試如下 var request require request set the headers va...