假设在我的控制器中我有一些异步方法,我使用$ q.all来等待所有这些方法完成。如果数据检索失败,如何向其中一个方法添加错误处理,并确保使用其他数据调用$ q.all,并为失败的数据发出相应的错误消息?
app.controller('Ctrl', ['$scope','$q', function($scope, $q) {
var promises = [];
var controller_data;
promises.push(assyncMethod1());
promises.push(assyncMethod2());
$q.all(promises).then(function () {
....
})
function assyncMethod1() {
return $http.get("data.json").success( function(data) {
controller_data = data;
});
//on error?
}
function assyncMethod2() {
return $http.get("data2.json").success( function(data) {
...
});
//on error?
}
}]);
我知道你会使用的单一承诺:
//basic version
promise.then(fnSuccess)
.catch(fnFailure) //optional
.finally(fnAlways) //optional
但是你会如何为多种功能做到这一点?