programing

angular - 여러 http 콜의 데이터에 액세스 - 약속 해결 방법

nicescript 2023. 3. 14. 23:26
반응형

angular - 여러 http 콜의 데이터에 액세스 - 약속 해결 방법

직설적으로 해야 할 일이 자꾸 꼬이고 있어요.3개의 다른 Ajax 콜에서 데이터를 가져와 3개의 콜을 모두 조합하여 처리한 후 사용자에게 어레이를 표시해야 합니다.

가장 간단한 형태로 내 코드는 다음과 같습니다.

function giftControler ($scope, $http) {
  var names = $http.get("names.json"),
      naughty = $http.get("naughty.json"),
      nice = $http.get("nice.json");

변수가 실제 결과가 아닌 약속에 할당되어 있고 http 요구가 이벤트큐에 전달된 것을 이해하고 있습니다.실행 가능한 스테이트먼트를 사용하여 이러한 변수를 정의하지 못할 수 있습니다.이러한 약속을 계속 처리하기 위해 어떻게 이 약속이 해결되기를 기다려야 하는지 이해할 수 없습니다.

즉시 코드를 추가하고 싶습니다.

      for (var i=0; i<names.length; i++){
        for (var j=0; j<nice.length; j++){
          if (names[i] === nice[j]){
            names[i] = names[i] + "--Yay!!";
          };
        };
      };                
      $scope.kids = names;

문제는 마치 어레이가 해결된 것처럼 약속을 이행할 수 없다는 것입니다.Javascript는 http 호출 직후의 스테이트먼트에 대해서, 이러한 스테이트먼트를 참조해, 약속이 해결되지 않은 경우에서도, 즉시 실행하려고 합니다.

$http api가 다음 3가지 기능을 가진 약속 객체를 제공한다는 점이 곤란합니다.error,success&then이 경우 어떻게 해야 할지 모르겠습니다.세 가지 모두에 대해 단일 성공 기능이 필요합니다.이 세 가지를 모두 해결한 후 각각 데이터를 처리한 다음 결과를 각도 모델에 할당해야 합니다.

제가 뭔가 놓치고 있는 게 분명한데, 제안해 주실 분 있나요?제 실제 작업에서는 여러 데이터 소스를 호출하고 하나의 좋은 데이터 수집을 만들기 위해 많은 처리(값 비교, 정렬, 연결 등)를 해야 하는데, 이 문제를 해결할 수 없습니다.

감사해요.

$q의 함수 'all'을 사용할 수 있습니다.

function giftControler ($scope, $http, $q) {
  var names = $http.get("names.json"),
      naughty = $http.get("naughty.json"),
      nice = $http.get("nice.json");
  $q.all([names, naughty,nice]).then(function(arrayOfResults) { 
      ... This callback would be called when all promised would be resolved
    });

이쪽이 조금 깨끗합니다.

다음은 문서 링크입니다.http://docs.angularjs.org/api/ng.$q

언급URL : https://stackoverflow.com/questions/14545573/angular-accessing-data-of-multiple-http-calls-how-to-resolve-the-promises

반응형