2016-06-14 3 views
0

저는 각도 프로젝트에 ng-csv 플러그를 사용하고 있습니다. 나는 배열을 통해 반복하고 $http 내 csv 파일에 대한 몇 가지 정보를 반환 얻을 전화. 나는 아래의 1 결과를 위해 현재 일하고있다.

var deferred = $q.defer(); 
$http({ 
    method: 'get', 
    url: "[endpoint]user/212121"             
}).success(function(data, status, headers, config) { 
    var ur = data; 
    deferred.resolve([{a:ur.accountId, b:ur.firstName, c:ur.email}]); 
    }) 
return deferred.promise; 

이렇게하면 csv가 하나의 레코드로 채워집니다. 그러나 임 그것을 $q.all와 함께 일하게하려고 고투하고있다. 내가 queue을 디버깅 할 때

var queue=[];      
$scope.testing.forEach(function(userjson){ 
queue.push($http({ 
      method: 'get', 
      url: "[endpoint]"+userjson.userId            
     }).then(function(response) { 
      var ur = response.data; 
       $scope.output.push({a:ur.accountId, b:ur.firstName, c:ur.email}); 
      })); 
}) 

$q.all(queue).then(function(response) { 
    return $scope.output; 
}); 

return $q.defer(); 

IT는 $http 데이터를 보유 약속 개체 가득합니다. 마찬가지로 return $scope.output;은 모든 결과를 보유합니다. ng-csv이 해석하지 않는 것 같습니다.

도움을 주시면 감사하겠습니다.

답변

1

업데이트하여 다음 기능 :

$http({ 
     method: 'get', 
     url: "[endpoint]"+userjson.userId            
    }).then(function(response) { 
     return {a:response.accountId, b:response.firstName, c:response.email}; 
     }) 

과 :

$q.all(queue).then(function(response) { 
    return response; 
}); 

각 요청에 대한 모든 응답의 배열을 반환 할 것이다. 지금 응답이 올바른 데이터로 채워집니다 의미에서 근무하는,

getData().then(function(data){ /*csv data is in data */ }) 
+0

감사를위한 그래서 아주 많이 : 좋아

function getData() { var queue=[]; var defered = $q.defer(); $scope.testing.forEach(function(userjson){ queue.push($http({ method: 'get', url: "[endpoint]"+userjson.userId }).then(function(response) { return {a:response.accountId, b:response.firstName, c:response.email}; })); }) $q.all(queue).then(function(response) { return defered.resolve(response); }); return defered.promise; } 

및 사용 :

이처럼 연기 쓰기 그. 그러나 return $ q.defer(); $ q.all에 도착하기 전에 csv가 반환됩니다. 내가 어떻게 고칠 수 있는지 알아? – Antony

+1

답변을 업데이트합니다. – Silvinus