有没有办法检测对象是否是流类的实例?例如RxJS或Bacon.js流。什么是检测Object是否是Stream类实例的最佳方法?
我正在寻找的是类似
function isStream(obj) {
// if obj is RxJS or Bacon Stream return true, otherwise false
}
什么是这样做的最可靠的方法是什么?
有没有办法检测对象是否是流类的实例?例如RxJS或Bacon.js流。什么是检测Object是否是Stream类实例的最佳方法?
我正在寻找的是类似
function isStream(obj) {
// if obj is RxJS or Bacon Stream return true, otherwise false
}
什么是这样做的最可靠的方法是什么?
Observable
是对象继承自EventStream
和Property
的基类。所以如果你想检测任何培根,你可以使用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
我复制了我的评论作为答案。 – OlliM
良好的答案,RxJS检测仍然失踪 - 因为我问了也不能接受它作为正确的答案。另一件事是,测试只适用于如果在环境中定义培根,但这是一个小的细节 –
有可能在每个框架更好的方法,例如一个本地isStream等价物,但检查instanceof是下一个最佳解决方案,适用于培根和rxjs。
const isStream = x => x instanceof Bacon.Observable || x instanceof Rx.Observable;
看到与[redux-rx](https://github.com/acdlite/redux-rx/blob/master /src/isObservable.js) –
你需要什么?这似乎更多是[XY问题](http://meta.stackexchange.com/q/66377) – Bergi
当您创建反应它的UI时,它可以获取不同格式的值,例如可以获取文本的反应性UI ,像这样的对象或流http://jsfiddle.net/8j6edrp9/ –
只要让它总是采取流。即使它是一个不断的流。无论如何,你大多不想要任意对象。尝试区分流对象,其他项目的数组和基元字符串(文本)。 – Bergi