나는 $ http 서비스와 함께이 이상한 문제에 직면하고있다. $ q.all()로 싸인 회사에서 제공하는 API에 대한 모든 요청은 동일한 응답을 반환한다.여러 요청, 동일한 응답
var promises = [
$httpPromiseA(),
$httpPromiseB(),
$httpPromiseC()
];
$q.all(promises)
.then(function (response) {
$log.log(response);
});
// $log.log returns [expectedObjectFromA, expectedObjectFromA, expectedObjectFromA]
이것은 임의로 발생합니다. expectedObjectFromA는 expectedObjectFromB 또는 expectedObjectFromC가 될 수 있습니다. 사실은 세 객체가 모두 동일하거나 두 개 중 하나와 둘 중 하나를 반환한다는 것입니다.
선형 방식으로 하나씩 연결하면 완벽하게 작동하지만 더 많은 시간이 소요됩니다. 물론 그 일을 성취하십시오.
var def = $q.deferred();
var resolvedData = [];
$httpPromiseA()
.then(function (response) {
$log.log(response);
resolvedData.push(reponse);
return $httpPromiseB();
})
.then(function (response) {
$log.log(response);
resolvedData.push(reponse);
return $httpPromiseC();
})
.then(function (response) {
$log.log(response);
resolvedData.push(reponse);
return def.resolve(resolvedData);
});
return def.promise();
// $log.log returns [expectedObjectFromA],
// [expectedObjectFromB] and [expectedObjectFromC]
// as expected. ResolvedData brings [expectedObjectFromA,
// expectedObjectFromB, expectedObjectFromC].
여기서 일어날 수있는 일에 대한 지침을 제공 할 수 있습니까?
$ http 및 $ q의 핵심 구현을 사용하고 있습니다. 나는 Kris Kowalk의 Q의 API 리소스를 기반으로 $ decorator로 적용된 $ q.allSettled를 시도했지만 성공하지 못했습니다.
감사합니다.
편집 1 : 그것은 래퍼 기능 그게 내 응용 프로그램에서 여기의 $http
서비스를 호출 때문에
I 별도로 함수에 인수를 전달할 수 없습니다. 래퍼 함수는 String
을 첫 번째 인수로 사용하고 Object
을 두 번째 인수로 사용합니다. 래퍼 함수는 $http
호출을 반환합니다.
편집 2 :
이 Plunker 전화 플리커 API 2 개 동시 요청의 인스 타 그램 API에 하나 다른. 문제는이 Plunker가 발생하지 않습니다. 나는이 문제를 다루는 방법을 정말로 모른다. 이건 정말 짜증나.
var promises = [http httpPromiseA(), $ httpPromiseB(), $ httpPromiseC()]; $ q.all (promises) .then (function (responseA, responseB, responseC) {$ log.log (response);}); // $ log.log는 [expectedObjectFromA, expectedObjectFromA, expectedObjectFromA]를 반환합니다. 약속의 각 응답을 별도로 잡아야합니다. 코드에서 위의 변경 사항을 시도해보십시오. –
@CoderJohn 질문을 보았습니까? 당신의 해결책은 이해가되지 않습니다. 당신이 제안한 것처럼'$ q.all()'을 다루도록 노력하십시오 ... –
명백히하기 위해, 병렬 요청을 사용할 때 때때로 깨지는 버그가 있거나 깨진 API를 해결하려고합니까? –