Folks,
tôi đã thiết lập mã của tôi hơi như sau:
$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);
}
}
Tôi đã theo ấn tượng rằng "sau đó" chức năng sẽ được gọi là chỉ khi tất cả các nguồn lực được giải quyết. Tuy nhiên đây không phải là những gì tôi nhìn thấy trong mã của tôi. Nếu tôi in dữ liệu1, tôi sẽ không được giải quyết.
Bất kỳ đầu mối nào về những gì tôi thiếu ở đây ??
Liệu 'resource1.query() 'vv trả về một Promise? ['all'] (http://docs.angularjs.org/api/ng.$q#all) mong đợi một Array of Promises, và nếu chúng không phải là Promises, chúng sẽ được xem xét ngay lập tức. –
Tôi đang sử dụng góc 1.15 và nó trả về một cái gì đó như thế này [$ giải quyết: false, $ then: function] Tôi tin đây là lời hứa – runtimeZero
Xin lưu ý rằng các chỉ số trong mảng kết quả là không dựa trên như mong đợi của một mảng, do đó $ scope.data1 = result [0], v.v. –