>  기사  >  웹 프론트엔드  >  여러 비동기 요청을 처리하기 위한 anglejs 메서드 요약_AngularJS

여러 비동기 요청을 처리하기 위한 anglejs 메서드 요약_AngularJS

WBOY
WBOY원래의
2016-05-16 16:22:001108검색

실제 비즈니스에서는 다음 단계로 진행하기 전에 여러 요청이 완료될 때까지 기다려야 하는 경우가 많습니다. 그러나 Anglejs의 $http는 동기 요청을 지원하지 않습니다.

해결책 1:

코드 복사 코드는 다음과 같습니다.

$http.get('url1').success(함수 (d1) {
           $http.get('url2').success(함수 (d2) {
​​​​​​ //처리 로직
        });
});

해결책 2:

그때의 메소드가 순서대로 실행됩니다.

코드 복사 코드는 다음과 같습니다.

var app = angle.module('app',[]);
app.controller('promiseControl',function($scope,$q,$http) {
함수 getJson(url){
      var deferred = $q.defer();
$http.get(url)
            .success(함수(d){
              d = parsInt(d);
console.log(d);
                   deferred.resolve(d);
            });
          deferred.promise를 반환합니다.
}

getJson('json1.txt').then(function(){
          return getJson('json2.txt');
}).then(함수(){
          return getJson('json1.txt');
}).then(함수(){
          return getJson('json2.txt');
}).then(함수(d){
console.log('end');
});
});

해결책 3:

$q.all 메소드의 첫 번째 매개변수는 배열(객체)일 수 있습니다. 첫 번째 매개변수의 내용이 실행된 후, 그 다음의 메소드가 실행됩니다. 첫 번째 매개변수 메소드의 모든 반환값은 배열(객체) 형태로 전달됩니다.

코드 복사 코드는 다음과 같습니다.

var app = angle.module('app',[]);
app.controller('promiseControl',function($scope,$q,$http) {
$q.all({첫 번째: $http.get('json1.txt'),두 번째: $http.get('json2.txt')}).then(function(arr){
console.log(arr);
        angle.forEach(arr,function(d){
console.log(d);
console.log(d.data);
         })
});
});

$q의 자세한 사용법에 대한 튜토리얼은 인터넷에 많이 있습니다. 나도 처음이야. 말을 잘하지 못하면 감히 말도 안되는 말을 할 수 없습니다. 위의 코드는 제가 이해한 대로 작성되었으며, 테스트 결과 문제 없이 실행되었습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.