目标:$scope.finalArray = $scope.arrayFromPromise2.concat($scope.arrayFromPromise1);
第一种方法
$scope.arrayFromPromise1 = [];
$scope.arrayFromPromise2 = [];
someService.query1()
.then(function(success){
$scope.arrayFromPromise1 = success.data;
return someService.query2();
})
.then(function(success){
$scope.arrayFromPromise2 = success.data;
$scope.finalArray = $scope.arrayFromPromise2.concat($scope.arrayFromPromise1);
});
第二种方法
$scope.arrayFromPromise1 = [];
$scope.arrayFromPromise2 = [];
function getData1(){
someService.query1().then(function(success){
$scope.arrayFromPromise1 = success.data
});
}
function getData2(){
someService.query2().then(function(success){
$scope.arrayFromPromise2 = success.data;
$scope.finalArray = $scope.arrayFromPromise2.concat($scope.arrayFromPromise1);
});
}
getData1();
getData2();
第二种方法 将根据 getData1 的第一个 promise 完成的时间抛出错误。 可以在 getData2 中使用 $scope.$watch 以便我可以观察 $scope.arrayFromPromise1 的变化吗?任何与链接 promise 不同的提示?
最佳答案
使用 $q.all 等待一堆 promise 完成然后根据信息采取行动是一项简单的任务。方法。
//We are returned a promise with a .then block to extract the data
//this is making a certain assumption that we are using the $http service
//where as using another such as $resource or restangular will "unwrap"
//the data for us...
var query1Promise = someService.query1().then(function(res) { return res.data; });
var query2Promise = someService.query2().then(function(res) { return res.data; });
$q.all([query1Promise, query2Promise])
.then(function(promises) {
$scope.finalArray = promises[0].concat(promises[1]);
});
关于javascript - 如何在 angularJS 中观看 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093926/