Scala 不带任何参数的订阅
我需要编写一些RxScala代码,从Scala Swing中的文本字段创建一个Scala 不带任何参数的订阅,scala,rx-scala,Scala,Rx Scala,我需要编写一些RxScala代码,从Scala Swing中的文本字段创建一个可观察的。 在查看Github之后,我编写了以下代码,看起来很有效: def textValues: Observable[String] = Observable.create[String](observer => { observer.onNext(field.text) Subscription() }) 其中field.text给出该字段中文本的当前状态 但我不明白这句话: Subscri
可观察的
。
在查看Github之后,我编写了以下代码,看起来很有效:
def textValues: Observable[String] = Observable.create[String](observer => {
observer.onNext(field.text)
Subscription()
})
其中field.text
给出该字段中文本的当前状态
但我不明白这句话:
Subscription()
此订阅有什么用?它不需要任何参数,所以我假设它不能用于取消订阅我创建的可观察对象,因为它甚至没有引用这个可观察对象
那么Subscription()
有什么好处呢
为什么不需要任何参数?首先,回答您关于线路的问题:
Subscription()
它创建一个空订阅,即当调用unsubscribe
时,订阅不执行任何操作(而不是取消注册事件侦听器)
其次,请注意,您正在使用“老式”的方式创建可观察对象:
@已弃用(“改用[[Observable.apply]],“0.26.2”)
def create[T](f:Observer[T]=>Subscription):可观察的[T]
新方法是这样的:
def-apply[T](f:Subscriber[T]=>单位):可观察[T]
它对应于RxJava的可观察。create
。
如果要使用此方法注册取消订阅
操作,应使用Subscriber.add(Subscription)
第三,让我指出,它定义了Swing事件的所有类型的可观察对象,因此您不必自己重新实现它们。它是用Java编写的,但很容易与Scala兼容,例如,在中可以看到