2013-08-22 2 views
0

으로 만듭니다. HTTP 서비스를 호출하고 결과를 반복하며 각 항목이 다른 http 호출의 키 역할을합니다.다른 HTTP 호출 내에서 http 호출을 각도

어떻게해야할까요?

다른 $ http 호출에서 $ http를 호출하는 것이 내부 $ http 호출 이 끝나기 전에 외부 $ http-loop가 끝나기 때문에 작동하지 않는다고 생각하십니까?

// 의사 코드 :

$http.get(url).then((response) -> 
    foreach response.data as item 
     $http.get(item.url).then((response) -> 
      foreach response.data as item 
     ) 
    return result 
) 

정말 잘 작동하지 않습니다

?

+1

있지만, 모든 HTTP 호출에 상관없이 루프 또는 함수에서 종료 될 것입니다. 어떤 유형의 조정을 원한다면 더 많은 세부 사항을 제공해야합니다. – Chandermani

+0

'then' 안에'$ scope'에 바인드하면 응답이 리턴 될 때 중요하지 않습니다. –

답변

1

잘 작동하지만 배열이나 개체에서 하위 응답을 수집하고 $ q.all (하위 응답)을 반환하여 호출자가 해결할 때까지 기다려야합니다.

당신의 의사 코드에 집착 나는 것 같습니다 생각 : 나는 확실하지 않다 그러나 당신의 관심사는 무엇

$http.get(url).then((response) -> 
var r = []; 
foreach response.data as item 
    r.push($http.get(item.url)) 
return $q.all(r).then((subs) -> foreach ...) 
) 
2

이 가짜 코드는 정상적으로 작동합니다. then은 비동기 작업의 콜백입니다. 자세한 내용은 promises을 참조하십시오.

코드 실행 흐름이 계속되지만 응답이 반환 될 때 콜백 (then)이 계속 발생하는 것은 맞습니다.

그래서, 이것은 당신이 then 내부 $scope에 결합하는 경우, 모두 잘 될 것입니다 및 데이터 모델에 결합하는 것을 의미한다.

관련 문제