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
'programing' 카테고리의 다른 글
Wordpress API v2에서 특정 날짜 이후에 수정된 게시물을 필터링하는 방법 (0) | 2023.03.14 |
---|---|
리듀서 액션 내의 프록시 오브젝트가 아닌 콘솔에 로깅할 때 상태를 어떻게 표시합니까? (0) | 2023.03.14 |
실제로 Hibernate new_generator_mappings가 하는 일은 무엇입니까? (0) | 2023.03.14 |
Azure에서 "엔터프라이즈 애플리케이션"과 "앱 등록"의 차이점 (0) | 2023.03.14 |
Angularjs에서 $watch 또는 ng-change를 사용하는 경우 (0) | 2023.03.14 |