用於理解$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...