簡體   English   中英

在RxScala中管理訂閱的最佳做法是什么?

[英]What is the best practice for managing subscriptions in RxScala?

我希望控制我的訂閱范圍,甚至是在存在異常的情況下,同時避免為我的訂閱使用var

在Rx / F#中,我會這樣做

use subscription = Observable.subscribe ...

並且在離開范圍時自動處理訂閱。

Scala的最佳實踐是什么?

我的解決方案是使用scala-arm,但我不確定是否有更好的方法。

我添加了從Subscription到Resource的隱式轉換,並使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM