我在 Scala 项目中使用 RxJava,并且需要执行我的 Observable 在一个单独的线程中。我知道为了实现这一目标我需要打电话 observeOn 方法并传递一个实例 rx.lang.scala.Scheduler 作为一个论点。

但我怎样才能创建该实例呢?我没有找到任何明显的实例化方法 rx.lang.scala.Scheduler 特征。例如,我有这样的代码:

Observable.from(List(1,2,3)).observeOn(scheduler)

有人可以提供一个工作的例子吗 scheduler 变量可以解决问题吗?

有帮助吗?

解决方案

特征是不可实例化的。

您需要使用“已知子类”下列出的特征的子类之一 API文档.

其他提示

所有调度程序都在包中

import rx.lang.scala.schedulers._

对于阻塞IO操作,使用IO调度器

Observable.from(List(1,2,3)).observeOn(IOScheduler())

对于计算工作,请使用计算调度程序

Observable.from(List(1,2,3)).observeOn(ComputationScheduler())

在当前线程上执行

Observable.from(List(1,2,3)).observeOn(ImmediateScheduler())

在新线程上执行

Observable.from(List(1,2,3)).observeOn(NewThreadScheduler())

将当前线程上的工作排队在当前线程之后执行

Observable.from(List(1,2,3)).observeOn(TrampolineScheduler())

如果你想使用自己的自定义线程池

val threadPoolExecutor = Executors.newFixedThreadPool(2)
val executionContext = ExecutionContext.fromExecutor(threadPoolExecutor)
val customScheduler = ExecutionContextScheduler(executionContext)
Observable.from(List(1,2,3)).observeOn(customScheduler)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top