2016-08-07 6 views
1

So habe ich einen Server, der 200 als Antwort jedes Mal zurückgibt. Ich muss die Antwort auf einen Fehler überprüfen response.data.error Wenn ich einen Fehler finde, muss ich die HTTP-Anfrage an die Fangmethoden in meinem Anwendungscode senden. Hier

ist ein Beispiel dafür, was ich passieren soll ..

Abfangjäger Code

// interceptor code 
{ 
    response:function(response){ 
    if (response.data.error) { 
     return $q.reject(response) 
    }else{ 
     return response 
    } 
    }, 
    responseError:function(rejection){ 
    // error handling logic 

    return $q.reject(rejection) 
    } 
} 

App-Code

// application code 
$http.get('/api/stuff') 
    .then(function(){ 
    // do success stuff 
    }).catch(function(){ 
    // the function i want to run!!! 
    }) 
+0

Was passiert, wenn Sie eine zufällige ** URL **, wie '$ http.get ('aaa')' '? Nennt es den "Fang"? – developer033

+0

Der veröffentlichte Code sollte wie erwartet funktionieren. Bitte stellen Sie [MCVE] (http://stackoverflow.com/help/mcve) mit fiddle/plunk zur Verfügung, wenn Sie Probleme mit diesem Ansatz haben. – estus

+0

Ok soooo es muss etwas mit meiner Anwendung sein. weil ich gerade einen Plunkr gemacht habe und es funktioniert hat https://plnrkr.co/edit/ZpwSMW66EnUtP78QhVV9?p=preview –

Antwort

1

Ok, es war eher ein dummer Fehler. Hier ist, was ich falsch gemacht habe.
wie ein Dummkopf kehrte ich innerhalb einer Funktion statt direkt innerhalb der Antwort. Also, was ich getan habe, ist ein Flag erstellen und wenn das Flag wahr war, dann direkt auf die Antwortfunktion zurück.

Abfangjäger Code

// interceptor code 
{ 
    response:function(response){ 
    myCustomErrorFunction(){ 
     if (response.data.error) { 
     return $q.reject(response) 
     }else{ 
     return response 
     } 
    } 
    }, 
    responseError:function(rejection){ 
    // error handling logic 

    return $q.reject(rejection) 
    } 
} 

App-Code

// application code 
$http.get('/api/stuff') 
    .then(function(){ 
    // do success stuff 
    }).catch(function(){ 
    // the function i want to run!!! 
    }) 

Vielen Dank für die Hilfe Jungs.

0

Versuchen Sie, den Fehler zu kontrollieren von:

$http.get('/api/stuff') 
    .then(function(data){ 
    console.log(data); // do success stuff 
    }, function(error){ 
     console.log(error); // will catch your error I hope 
    } 

Ich denke nicht Hut .catch wird es kacth, müssen Sie den Scheck im .then Block vorformen.

Verwandte Themen