2017-01-03 96 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); 
} 
相关问题