2017-01-03 95 views
3

我有這樣的方法:檢查對象是可觀察的RxJS5

Queue.prototype.drain = function (obs, opts) {}; 

的方法,我想檢查是否在可觀察到的通過了第一個參數,或者用戶,他們忽略了觀察到的,只是傳入一個選項對象。

所以基本上我需要做這樣的事情:

if(!Rx.Observable.isObservable(obs)){ //this method is fictitious 
    opts = obs || {}; 
    obs = Rx.Observable.interval(1000); 
} 

我認爲RxJS爲用戶提供這種檢查,但我無法找到將告訴您如何做到這一點的類型檢查的文檔。

任何人都知道如何?

+0

通常是可選的參數是最後的。您是否考慮切換訂單?含義:首先'opts'然後是可選參數'obs'? – Josep

+0

ops也是可選的:) – Olegzandr

+0

我仍然需要做檢查,即使我切換順序 - 我可以檢查它是否爲空/未定義,但我寧願有一個特定的檢查,它只是更好/更安全,因爲那麼我可以拋出一個錯誤,如果用戶使用API​​錯誤 – Olegzandr

回答

7

內部,爲Observableusing instanceof RxJS測試:

if (result instanceof Observable) { 
    ... 
} 

所以,你可以使用:

if (!(obs instanceof Rx.Observable)) { 
    opts = obs || {}; 
    obs = Rx.Observable.interval(1000); 
} 
相關問題