2015-02-05 1 views
0

Я работаю над SPA, который обычно находится в сети, но может быть отключен, и я должен вести журнал всех запросов к API. Когда некоторые запросы терпят неудачу, я должен повторить их позже.Restangular save and retry после обновления

У меня есть локальная БД для сохранения всех запросов. Когда мое приложение запускается, я извлекаю их все и повторяю те, которые отмечены.

Что мне нужно, это настроить конфигурационный объект на основе того, что я уже отправил. У меня есть ответчик-перехватчик, и я сохраняю объект ответа.

{ 
    config: { 
    headers: Object, 
    method: "GET", 
    params: Object, 
    transformRequest: Array[1], 
    transformResponse: Array[1], 
    url: "..." 
    }, 
    data: {...}, 
    headers: {...}, 
    status: 200, 
    statusText: "OK" 
} 

Есть ли функция для создания ретрансляции с заданным объектом конфигурации?

Благодарности

ответ

0

Если я бы делал это я бы настройки setErrorInterceptor

var yourLocalDb = function($http) { 
    var failedRequests = []; 

    this.store = function(request) { 
     this.failedRequests.push(request); 
    } 

    this.retry = function() { 
    var self = this; 
    angular.forEach(this.failedRequests,function(request) { 
     $http(request.response.config).then(function() { 
     //in case of success 
     self.failedRequests.splice(self.failedRequests.indexOf(request),1); 
     request.responseHandler.apply(undefined,arguments); 
     }), request.deferred.reject); 
    }); 

    } 
} 


Restangular.setErrorInterceptor(function(response, deferred, responseHandler) { 

    yourLocalDb.store({ 
    response : response, 
    responseHandler : responseHandler, 
    deffered : deffered 
    }); 
} 

тогда, когда у вас есть подключение вы можете просто позвонить

yourLocalDb.retry(); 

Не тестировался, но это должно дать вам ключ ,

+0

Спасибо, за ваш ответ. Я больше не могу это тестировать, так как я покинул проект несколько месяцев назад, но до этого я сделал нечто похожее – subarroca

Смежные вопросы