2017-10-22 1 views
-1

아래 코드에서 변수 x에 따라 약속 배열에 함수를 추가합니다. 마지막 조건에서는 $ http 응답 후에 만 ​​함수를 추가해야합니다. 이 코드가 맞습니까? $q.all에있는 모든 약속을 실행하면 $http 함수가 응답과 함께 반환 될 때까지 대기합니까?

var promises = []; 

array.forEach(function(x){ 

    if (x==1) 
     promises.push(function1('aaa')); 
    else if (x==2) 
     promises.push(function2('bbb')); 
    else { 
      $http.get("url.htm").then(function(response) { 
       promises.push(function3(response)); 
      }); 
    } 
}); 

$q.all(promises).then(function(resultArray) { 
    // ..... 
} 

답변

1

비동기식이기 때문에 AJAX 응답을 기다리지 않습니다.

그것은 무엇 funciton1 & 기능 2 리턴 (약속?) 분명하지 않다,하지만 뭔가해야 예, 기능 1, 2, 3 반환 약속하지만, 솔루션 당신이 호출하지 않는 이상 같은

var promises = []; 

array.forEach(function(x){ 

    if (x===1) 
     promises.push(function1('aaa')); 
    else if (x===2) 
     promises.push(function2('bbb')); 
    else { 
      promises.push($http.get("url.htm")) 
    } 
}); 

$q.all(promises).then(function(resultArray) { 
    // ..... 
} 
+0

' function3' – ps0604

+0

$ q.all 콜백에서 호출해야합니다 –

관련 문제