W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
$q 有四個(gè)方法:
$q.all() 方法適用于并發(fā)場(chǎng)景很合適:
angular.module('app', [], angular.noop) .controller('TestCtrl', function($scope){ var p = $http.get('/json', {params: {a: 1}}); var p2 = $http.get('/json', {params: {a: 2}}); var all = $q.all([p, p2]); p.success(function(res){console.log('here')}); all.then(function(res){console.log(res[0])}); });
$q.reject() 方法是在你捕捉異常之后,又要把這個(gè)異常在回調(diào)鏈中傳下去時(shí)使用:
要理解這東西,先看看 promise 的鏈?zhǔn)交卣{(diào)是如何運(yùn)作的,看下面兩段代碼的區(qū)別:
var defer = $q.defer(); var p = defer.promise; p.then( function(data){return 'xxx'} ); p.then( function(data){console.log(data)} ); defer.resolve('123');
var defer = $q.defer(); var p = defer.promise; var p2 = p.then( function(data){return 'xxx'} ); p2.then( function(data){console.log(data)} ); defer.resolve('123');
從模型上看,前者是“并發(fā)”,后者才是“鏈?zhǔn)健薄?/p>
而 $q.reject() 的作用就是觸發(fā)后鏈的 error 回調(diào):
var defer = $q.defer(); var p = defer.promise; p.then( function(data){return data}, function(data){return $q.reject(data)} ). then( function(data){console.log('ok, ' + data)}, function(data){console.log('error, ' + data)} ) defer.reject('123');
最后的 $q.when() 是把數(shù)據(jù)封裝成 promise 對(duì)象:
var p = $q.when(0, function(data){return data}, function(data){return data}); p.then( function(data){console.log('ok, ' + data)}, function(data){console.log('error, ' + data)} );
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: