2013-07-01 1 views
3

을 위해 나는 두 개 이상의 아약스 호출 AngularJS와 사용을 마친시기를 알 수있는 방법을 찾고 있었다하지만 난 jQuery를 사용하여 찾을 만 할 수 있었다 :

$.when(promise3, promise5).done(
    function(threeSquare, fiveSquare) { 
     console.info(threeSquare, fiveSquare); 
    } 
); 

과 :

var promises = [ 
    $.getJSON('square/2'), 
    $.getJSON('square/3'), 
    $.getJSON('square/4'), 
    $.getJSON('square/5') 
]; 

$.when.apply($, promises).done(function() { 
    console.info(arguments); 
}); 

이 사용 AngularJS와 같은 일을 할 수있는 방법이 있나요? 지원해 주셔서 감사합니다.

답변

9

$ q.all(); 그것에 대해 읽을 수 있습니다 here.

모든 (약속)

는 하나의 약속에 여러 약속을 결합 입력 약속의 모든 문제가 해결 될 때 해결 될 : 여기

은 조각이다.

매개 변수 promises - {Array} - 약속 배열입니다. Returns {Promise} - 값 배열로 해결 될 단일 약속을 반환합니다. 각 값은 promises 배열의 동일한 인덱스 에있는 약속에 해당합니다. 약속 중 하나라도 거부로 해결 된 인 경우이 결과 약속은 동일한 거부로 으로 해결됩니다.

버전 1.1.x의에서

, 당신은 이런 식으로 뭔가를 할 수 있어야한다 :

$q.all([ 
    $http.get('square/2'), 
    $http.get('square/3'), 
    $http.get('square/4'), 
    $http.get('square/5') 
]).then(function(arrayOfResponses) { 
    $log.info('all set'); 
    $log.debug(arrayOfResponses); 
}); 

업데이트 :

버전 1.1.6로, 당신은 할 수 있어야 다음 :

var Square = $resource('square/:id', {id:1}); 
$q.all([ 
    Square.get({id:2}).$promise, 
    Square.get({id:3}).$promise, 
    Square.get({id:4}).$promise, 
    Square.get({id:5}).$promise 
]).then(function(arrayOfResponses) { 
    $log.info('all set'); 
    $log.debug(arrayOfResponses); 
}); 
+0

$ resource.get이 약속을 되 돌리는 지에 대해서는 약간 분명한데, 각도의 1.1.x 버전에서도 .. 당신이 "Square.get ({squareId : 2}). $ q"해야 할 것 같은 코드를 읽는 것. 또는 $ http.get을 사용할 수도 있습니다. –

+0

@Karl Zilles, 나는 당신이 맞다고 생각하지만, $ resource에 대한 변경 사항에 관해서는 문서가 약간 퍼지기는합니다. $ http.get이 약속을 반환하는 것처럼 보입니다. 나는 그 모범을 새롭게 할 것이다. 감사. –

+1

$ resource에는 $가 있지만 약속에 대한 액세스 권한이 부여되지 않은 것처럼 보입니다. 그러나 $ promise 기능이 1.1.6 버전으로 제공되는 것처럼 보입니다. https://github.com/angular/angular.js/commit/05772e15fbecfdc63d4977e2e8839d8b95d6a92d –