반응형
각 리소스 호출 및 $q
여러분.
코드 설정은 다음과 같습니다.
$scope.init = function(){
return $q.all([resource1.query(),resource2.query(),resource3.query()])
.then(result){
$scope.data1 = result[1];
$scope.data2 = result1[2];
$scope.data3 = result[3];
console.log(data1); //prints as [$resolved: false, $then: function]
doSomething($scope.data1,$scope.data2);
}
}
모든 리소스가 해결되어야 '그때' 기능이 호출된다는 인상을 받았습니다.그러나 이것은 내 코드에서 볼 수 있는 것이 아닙니다.data1을 출력하면 미해결 상태가 됩니다.
제가 뭘 놓쳤는지 알 수 있는 단서라도 있나요?
저는 이 문제에 부딪혔고, 꽤 혼란스러웠습니다.문제는 리소스 작업을 호출하는 것이 실제로 http 약속을 반환하는 것이 아니라 빈 참조(데이터가 서버에서 반환될 때 채워짐)라는 점입니다($resource docs의 반환 값 섹션 참조).
이 결과가 왜 해결되지 않은 약속의 배열을 반환하는지 모르겠지만, 각 리소스의 약속을 얻으려면 다음을 사용해야 합니다.resource1.query().$promise
. 예제를 다시 쓰는 방법:
$scope.init = function() {
return $q.all([resource1.query().$promise, resource2.query().$promise, resource3.query().$promise])
.then( function(result) {
$scope.data1 = result[0];
$scope.data2 = result[1];
$scope.data3 = result[2];
console.log($scope.data1);
doSomething($scope.data1,$scope.data2);
})
}
다른 사람이 시간을 절약할 수 있기를 바랍니다.
$scope.data1이 아닌 data1을 인쇄하고 있습니다.
console.log(data1);
제가 당신이라면 다음과 같이 사용할 것입니다.
$scope.init = function(){
return $q.all([resource1.query(),resource2.query(),resource3.query()])
.then(result){
console.log(result[1]);
$scope.data1 = result[1];
$scope.data2 = result1[2];
$scope.data3 = result[3];
doSomething($scope.data1,$scope.data2);
}
}
@cdidyks answer처럼 이것은 유용합니다.$promise
, 하지만 제 생각에 그것은 과제 수행을 위해 완료되는 모든 자원에 의존하지 않고, 적은 코드로 $ promises를 더 쉽게 접근할 수 있도록 하기 때문에 더 나은 설계 패턴입니다.
$scope.data1 = resource1.query();
$scope.data2 = resource2.query();
$scope.data3 = resource3.query();
$scope.init = function() {
return $q.all([
$scope.data1.$promise,
$scope.data2.$promise,
$scope.data3.$promise
])
.then(function(result) {
console.log('all done');
doSomething($scope.data1, $scope.data2);
})
}
이 문제를 해결하기 위한 더 나은 방법을 찾고자 하는 사람들을 위해 다음을 시도해 보십시오.
resource.query().$promise.then(function(result) {
console.log(result);
// Do something else, like instantiate a JS driven table
});
언급URL : https://stackoverflow.com/questions/18646912/angular-resource-calls-and-q
반응형
'source' 카테고리의 다른 글
오라클 디버깅 기법 (0) | 2023.11.07 |
---|---|
Angular의 두 가지 사례가 필요합니다.JS $http 서비스? (0) | 2023.11.07 |
요소의 XSLT 이름이 있습니까? (0) | 2023.11.07 |
printk와 pr_info의 차이 (0) | 2023.11.07 |
루트(또는 sudo)에서 NVM을 사용할 수 없습니다. (0) | 2023.11.07 |