2017-07-28 40 views
1

我有一個觀察的功能,但這要求:如何在Observable Http中返回自定義catch錯誤?

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

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

我藉此觀察到類似如下:

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

我需要檢查,如果用戶如果是發送短信,發送,否則返回錯誤。

回答

3

只需使用throw()操作:

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

不要忘了將其導入:

import 'rxjs/add/observable/throw'; 

這裏是the docs say

創建一個可觀察到發射沒有物品給觀察員和 立即發出錯誤通知。

+0

這是正確的方式,還是更好的創建分離方法檢查? – Daniel

+0

@Daniel,這是主觀的,你可能會創建一個更具表現力的獨立方法,比如'if(this.sms.canSend()){this.sms.send()}'。但是,如果服務器也執行了一些驗證並可能返回相同的錯誤,那麼我將把檢查留在'send'方法中 –

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

    if (this.usedAttempts < this.maxAttempts) { 
     return Observable.throw(customError) 
    } 
} 
相關問題