실제 비즈니스에서는 다음 단계를 진행하기 전에 여러 요청이 완료 될 때까지 기다려야합니다. 그러나 AngularJS의 $ HTTP는 동기 요청을 지원하지 않습니다.
Solution 1:
코드 사본은 다음과 같습니다.
$ http.get ( 'url1'). 성공 (함수 (d1) {
$ http.get ( 'url2'). 성공 (함수 (d2) {
// 논리 처리
});
});
Solution 2:
그때 방법은 순서대로 실행됩니다.
코드 사본은 다음과 같습니다.
var app = angular.module ( 'app', []);
app.controller ( 'promisecontrol', function ($ scope, $ q, $ http) {
함수 getJson (url) {
var deferred = $ q.defer ();
$ http.get (URL)
.success (함수 (d) {
d = parseint (d);
Console.log (d);
연기 (D);
});
Return Deferred.Promise;
}
getJson ( 'json1.txt'). 그런 다음 (function () {
return getjson ( 'json2.txt');
}). 그런 다음 (function () {
return getjson ( 'json1.txt');
}). 그런 다음 (function () {
return getjson ( 'json2.txt');
}). 그런 다음 (함수 (d) {
Console.log ( 'end');
});
});
해결책 3 :
$ q.all 메소드의 첫 번째 매개 변수는 배열 (개체) 일 수 있습니다. 첫 번째 매개 변수의 모든 내용이 실행 된 후에는 방법이 실행됩니다. 첫 번째 매개 변수의 메소드의 모든 반환 값은 배열 (개체)로 전달됩니다.
코드 사본은 다음과 같습니다.
var app = angular.module ( 'app', []);
app.controller ( 'promisecontrol', function ($ scope, $ q, $ http) {
$ q.all ({첫 번째 : $ http.get ( 'json1.txt'), 두 번째 : $ http.get ( 'json2.txt')}).
Console.log (ARR);
Angular.foreach (arr, function (d) {
Console.log (d);
Console.log (D.Data);
})
});
});
$ Q의 상세 사용에 관한 많은 튜토리얼이 있습니다. 나도 연락을 취하고 있습니다. 당신이 잘 말할 수 없다면, 당신은 말도 안되는 말을하지 않습니다. 위의 코드는 내 이해에 따라 작성되었으며 테스트 후에는 아무런 문제가 없었습니다.