Отключение интернет-соединения останавливает то, что делал AngularJS (Ionic v1) - PullRequest
0 голосов
/ 24 мая 2018

Отключение подключения к Интернету останавливает то, что делал 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, не требует подключения к Интернету, так почему же оно останавливается?

Как я могу предотвратить это?

...