RXScala中的热和冷可观测量有什么区别?
发布时间:2020-12-16 09:55:04 所属栏目:安全 来源:网络整理
导读:我知道在C#的上下文中,热和冷可观察量之间的区别是 previously discussed on Stack Overflow,但是我根本不知道C#并且不理解Lee Campbell所指的代码示例. 我在Scala工作,使用RXScala库.什么是Scala中的冷热可观测量,以及它们如何使用RXScala实现? 解决方法
我知道在C#的上下文中,热和冷可观察量之间的区别是
previously discussed on Stack Overflow,但是我根本不知道C#并且不理解Lee Campbell所指的代码示例.
我在Scala工作,使用RXScala库.什么是Scala中的冷热可观测量,以及它们如何使用RXScala实现? 解决方法
冷观察
冷可观察性是可观察的,在订阅时开始产生价值. 被动的流并根据请求开始发布. 一些例子: import rx.lang.scala._ import org.joda.time._ val onetwothree = Observable.just(1,2,3) // when subscribed each subscriber will get 1,and 3 // scala> onetwothree.subscribe(println(_)) // 1 // 2 // 3 // res1: rx.lang.scala.Subscription = rx.lang.scala.Subscription$$anon$2@11be372a // When subscribed will get one event with current DateTime val currentTime = Observable.defer { Observable.just(DateTime.now) } // scala> currentTime.subscribe(println(_)) // 2015-01-19T14:13:37.333+02:00 // scala> currentTime.subscribe(println(_)) // 2015-01-19T14:13:38.742+02:00 // scala> currentTime.subscribe(println(_)) // 2015-01-19T14:13:40.448+02:00 // And this one is tricky. val loggedInUsers = Obserable.defer { fetchLoggedUsersFromDb } 热门观察 无论订阅如何,都处于活动状态并发布的流. 自然的例子来自UI编程:鼠标点击流.无论是否订阅了流,都会产生点击. 在许多应用程序中,loggedInUsers被称为温暖可观察的东西: val loggedInUsers = updateTriggers.concatMap { _ => fetchLoggedUsersFromDb }.replay(1) 当上次触发updateTriggers时,此流的subriber将立即获得一个值,即已记录的用户.还有连续的更新. 温暖的观察 val hot = mouseClicks // Observable that will replay all of its items and notifications to any future Observer // i.e. all mouseClicks from the time point we called `.replay` val cold = hot.replay 但是之间有一些东西: // Observable that will replay at most 10 items emitted by `hot` val warm = hot.replay(10) 当我们订阅热门时,它会立即发出最后10次点击,并在此之后继续发出点击. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |