2017-07-28 1 views
1

Ich habe eine beobachtbare Funktion, die Anfrage tut:Wie benutzerdefinierte Fangfehler in Observable Http zurückgegeben?

public send(): Observable<ISms[]> { 

    if (this.usedAttempts < this.maxAttempts) { 
     return; // Here return custom error 
    } 
} 

Ich nehme diese beobachtbar wie zum Beispiel:

this.sms.send().subscribe(
     response => { 
     console.log(response); 
     }, 
     error => { 
     console.log(error); 
     } 
    ); 
    } 

Ich brauche Benutzer zu überprüfen, ob Sms wenn ja, senden kann, sonst Fehler zurück .

Antwort

3

Verwenden Sie einfach throw() Betreiber:

if (this.usedAttempts < this.maxAttempts) { 
    return Observable.throw('error description'); 
} 

Vergessen Sie nicht, es zu importieren:

import 'rxjs/add/observable/throw'; 

Hier ist, was the docs say:

Erstellt eine beobachtbare dass aussendet keine Gegenstände zum Beobachter und gibt sofort eine Fehlermeldung aus.

+0

Ist es richtig, oder besser erstellt getrennte Methode, die überprüfen? – Daniel

+0

@Daniel, das ist subjektiv, Sie könnten wahrscheinlich eine separate Methode erstellen, die aussagekräftiger wäre, wie 'if (this.sms.canSend()) {this.sms.send()}'. Aber wenn der Server auch eine Validierung durchführt und den gleichen Fehler zurückgibt, würde ich die Prüfung innerhalb der 'send'-Methode belassen –

2
public send(): Observable<ISms[]> { 

    if (this.usedAttempts < this.maxAttempts) { 
     return Observable.throw(customError) 
    } 
} 
Verwandte Themen