2

ich folgend factory habe:

.factory('Request', ['$resource', 'general', 
     function ($resource) { 
      return $resource(baseURL + ':resourceName/', {}, { 
       get : { 
        method : 'GET', 
        isArray : true, 
        transformResponse : function (data, headers) { 
         return JSON.parse(data).data; 
        }, 
        interceptor: { 
         responseError : function (data) { 
          gnrl.logIn({},false,function(){console.log("test");}); 
          // ???? How to recall this request? 
         } 
        } 
       } 
      }); 
     } 
    ]); 

Was ich versuche zu tun ist, wenn der Benutzer einige Probleme in dieser Anfrage hat, soll der Benutzer erneut anmelden und die Anforderung sollte erneut ausgeführt werden.

Der Antrag Werk wird wie folgt aufgerufen:

Request.get(params, headers, function (res) { 
    //does some operation with results 
}); 

ich gesehen habe some relatedquestions aber keiner von ihnen konnte meine Situation vollständig passen.

Antwort

0

Es wird mit den Antworten in der Frage gelöst. Wie gesagt, die Hauptidee war $promise anstelle von interceptor.

Ich habe das Problem wie folgt gelöst:

Das Folgende ist eine Funktion in meinem Dienst

self.doRequest = function(nOfRetries, params, successFunction) { 
     function fai(a) { 
      nOfRetries--; 
      self.logIn(function(){self.doRequest(nOfRetries);}); 
     } 
     if (nOfRetries >= 0) { 
      Request.get(params).then(successFunction).catch(fai); 
     } 
    } 

Login nur eine andere Funktion in demselben Dienst ist und als Callback-Funktion senden i eine Anfrage an diese Funktion.

doRequest wird wie folgt aufgerufen:

general.doRequest(3, params/*parameters used in request*/, function (res) { 
      /***cb function for your initially request*/ 
}); 

Als letzt Sie sehen die Request Fabrik:

.factory('Request', ['$resource', 
     function ($resource) { 
      var res = $resource(baseURL + ':resourceName/', {}, { 
        get : { 
         method : 'GET' 
        } 
       }); 
      return { 
       get : function (arguments) { 
        return res.get(arguments).$promise; 
       } 
      }; 
     } 
    ]) 

Beachten Sie, dass jeder Fehler (serverseitige oder nicht) trat bei doRequest's Erfolg Rückruf Funktion führt auch zur Ausführung von Fehler Callback-Funktion.

Verwandte Themen