Отключение подключения к Интернету останавливает то, что делал AngularJS (Ionic v1)
У меня есть такой код:
$ionicLoading.show({'template': 'loading'});
var promisesArray = [];
angular.forEach(photoCollection, function(photoPayload){
var promise = sendPhotoInHttpRequest(photoPayload);
promisesArray.push(promise);
});
$q.all(promisesArray).then(function(){
doOtherStuff();
$ionicLoading.hide();
});
// the end
function sendPhotoInHttpRequest(payload) {
// used to force wait for counter to increase
var defer = $q.defer();
$http({
'url': url,
'method': 'POST',
'data': JSON.stringify(payload)
}).then(function(res){
// whenever I cut off Internet connection
// the below code stop running
// but the photo already reached the server
updateDatabaseSetPhotoAsSent(payload.id).then(function(res){
increaseCounter(counterObj);
defer.resolve('ok');
}).catch(function(e){
defer.reject(e);
});
}).catch(function(err){
defer.reject(err);
});
return defer.promise;
}
В app.js
У меня есть два прослушивателя событий для online
иoffline
для активной и деактивированной другой службы, не знаю, связано ли это с этой ошибкой.
Всякий раз, когда я отключаю интернет-соединение при отправке фотографий, код, обновляющий строки базы данных, перестает работать, хотя фотографияуже достиг сети.
После некоторой отладки кажется, что первые несколько $http
запросов не достигают then
и catch
, когда я отключаю интернет-соединение, как если бы они были "разрезаны посередине" и становятся зомби,Если я не отключаю Интернет, все работает нормально.
Я нахожу это странным, потому что все, кроме самого $http
, не требует подключения к Интернету, так почему же оно останавливается?
Как я могу предотвратить это?