在 RxScala 中管理订阅的最佳实践是什么?
What is the best practice for managing subscriptions in RxScala?
我想控制我的订阅的范围,甚至在出现异常的情况下,同时避免对我的订阅使用 var
在Rx/F#我会这样做
use subscription = Observable.subscribe ...
并且订阅在离开范围时自动销毁。
Scala 中的最佳实践是什么?
我的解决方案是使用scala-arm,但我不确定是否有更好的方法。
我添加了从订阅到资源的隐式转换,并使用了 scala-arm 的托管资源机制,如下所示:
object ResourceImplicits {
implicit val subscription2Resource = new Resource[Subscription] {
override def close(s: Subscription): Unit = s.unsubscribe() }
}
//...
for (s <- managed(obs.subscribe { n => println(s"n=$n")})) {
// the subscription is alive in this scope
// ...
}
//the subscription has been unsubscribed
我想控制我的订阅的范围,甚至在出现异常的情况下,同时避免对我的订阅使用 var
在Rx/F#我会这样做
use subscription = Observable.subscribe ...
并且订阅在离开范围时自动销毁。
Scala 中的最佳实践是什么?
我的解决方案是使用scala-arm,但我不确定是否有更好的方法。
我添加了从订阅到资源的隐式转换,并使用了 scala-arm 的托管资源机制,如下所示:
object ResourceImplicits {
implicit val subscription2Resource = new Resource[Subscription] {
override def close(s: Subscription): Unit = s.unsubscribe() }
}
//...
for (s <- managed(obs.subscribe { n => println(s"n=$n")})) {
// the subscription is alive in this scope
// ...
}
//the subscription has been unsubscribed