检测Object是否是Stream类的实例的最佳方法是什么?

时间:2015-05-31 12:19:31

标签: javascript reactive-programming rxjs bacon.js

有没有办法检测对象是否是流类的实例?例如RxJS或Bacon.js流。

我正在寻找的是像

function isStream(obj) {
   // if obj is RxJS or Bacon Stream return true, otherwise false
}

最可靠的方法是什么?

2 个答案:

答案 0 :(得分:2)

ObservableEventStreamProperty个对象继承的基类。因此,如果您想要检测任何培根,可以使用Observable

function isStream(v) {
  return v instanceof Bacon.Observable
}

function test(v) {
  console.log(isStream(v))
}

test(Bacon.constant(1)) // true
test(Bacon.once(1))     // true
test(1)                 // false

http://jsbin.com/qugihobalu/2/edit

答案 1 :(得分:2)

每个框架中可能有更好的方法,例如本机isStream等价,但检查instanceof是下一个最佳解决方案,适用于培根和rxjs。

const isStream = x => x instanceof Bacon.Observable || x instanceof Rx.Observable;