я хочу сделать следующее, у меня есть контроллер, как это:AngularJS ждет, пока все асинхронные вызовы будут завершены, даже если статус 401 будет возвращен?
dashboardService.getDashboardStateLakes().then(function (result) {
if (result) {
dosomething();
}, function (err) {
//TODO: handle error;
//alert(err);
throw new Error(err);
});
// populate dashboard lakes status (left upper of the screen)
dashboardService.getDashboardLakesStatus().then(function (result) {
if (result) {
dosomething();
}
}, function (err) {
//alert(err);
//throw new Error(err);
});
и в обслуживании он делает так:
this.getDashboardLakesStatus = function() {
var deffered = $q.defer();
$http.get(api.GET_dashboardLakesStatus)
.success(function (result) {
//logic
deffered.resolve(result);
})
.error(function (data, status) {
//logic
deffered.reject(status);
return deffered.promise;
};
Теперь все, что я хочу сделать что-то, когда оба ajax-вызовы завершены, но проблема в том, что иногда 401 возвращается (намеренно), а $ q останавливается, когда возникает ошибка ... какой у меня другой вариант?
Я не понимаю, что вы хотите. Вы хотите сделать некоторую логику после завершения 2 $ http.get независимо от того, успешны ли они? Или только если они преуспеют или что? –
независимо от того, успешны они или нет, это правильно – totothegreat
Все еще не совсем уверен в проблеме. Почему вы не помещаете свою логику (dosomething()) в обработчики ошибок? –