2016-06-20 7 views
1

는 다음을 수행 할 수있는 권한 구문을 얻을 찾고 호출각도 JS는

1) empty object results = {} 
2) first webservice call finished = results.webservice1 = data; 
3) second webservice call finished = results.webservice2 = data; 
4) Complete 

나는 이런 식으로 뭔가를 가지고 있지만 구문은 느낌이 좋지 않습니다

function getClaimSummary(filter) { 
     let deferred = $q.defer(); 

     $http.post(configSettings.Api.GetClaimSummary, filter, { withCredentials : true }) 
      .success(function(data){ 
       deferred.resolve(data); 
      }) 
      .error(function(error){ 
       deferred.reject(error); 
      }); 

     return deferred.promise; 
    } 

    function getPolicySummary(filter) { 
     let deferred = $q.defer(); 

     $http.post(configSettings.Api.GetPolicySummary, filter, { withCredentials : true }) 
      .success(function(data){ 
       deferred.resolve(data); 
      }) 
      .error(function(error){ 
       deferred.reject(error); 
      }); 

     return deferred.promise; 
    } 

    function calculateAccumulations(filter){ 
     service.result = {}; 

     //Get Claims Summary 
     getClaimSummary(filter).then(function(data){ 
      service.result.claims = data; 
     }).then(getPolicySummary(filter).then(function(data){ 
      service.result.policy = data; 
      showAccumulations(); 
     })); 
    } 

답변

2

$http 자체가 이미 반환 약속, 그래서 자신을 만들 필요가 없습니다, 당신은 또한 이렇게 서로를 기다리는 대신에 두 약속을 동시에 처리 할 수 ​​있습니다 :

function getClaimSummary(filter) { 
    return $http.post(configSettings.Api.GetClaimSummary, filter, { withCredentials : true }); 
} 

function getPolicySummary(filter) { 
    return $http.post(configSettings.Api.GetPolicySummary, filter, { withCredentials : true }); 
} 

function calculateAccumulations(filter){ 
    service.result = {}; 

    //Get Claims Summary 
    $q.all({ 
     claims: getClaimSummary(filter), 
     policy: getPolicySummary(filter) 
    }).then(function (result) { 
     service.result = result; 
    }); 
} 

은 당신은과 같이 그 일을 일부 중복 코드를 구할 수 :

function fetchData(type, filter) { 
    return $http.post(configSettings.Api[type], filter, { withCredentials : true }); 
} 

function calculateAccumulations(filter){ 
    service.result = {}; 

    //Get Claims Summary 
    $q.all({ 
     claims: fetchData('GetClaimSummary', filter), 
     policy: getPolicySummary('GetPolicySummary', filter) 
    }).then(function (result) { 
     service.result = result; 
    }); 
} 

에 대한 $qhere을 찾을 수 있습니다 더 많은 정보를 제공합니다.

+0

감사합니다. – StevieB