Domanda

Sto usando RXJAVA nel mio progetto Scala e ho bisogno di eseguire il mio Observable in un thread separato.So per ottenere ciò, ho bisogno di chiamare il metodo observeOn su di esso e passare un'istanza di rx.lang.scala.Scheduler come argomento.

Ma come posso creare quell'istanza?Non ho trovato modi apparenti di istanziazione del tratto rx.lang.scala.Scheduler.Ad esempio, ho questo codice:

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

Qualcuno può fornire un esempio di funzionamento della variabile scheduler che farà il trucco?

È stato utile?

Soluzione

Un tratto non è istantanea.

È necessario utilizzare una delle sottoclassi del tratto elencato in "sottoclassi noti" nel Documentazione API .

Altri suggerimenti

Tutti gli scheduler sono nel pacchetto

import rx.lang.scala.schedulers._
.

Per il blocco delle operazioni IO, utilizzare IO Scheduler

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

Per il lavoro computazionale, utilizzare la pianificazione del calcolo

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

Per eseguire sul filetto corrente

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

Per eseguire su un nuovo filetto

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

Le code per funzionare sul filo corrente da eseguire dopo l'attuale

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

Se vuoi utilizzare il proprio pool di thread personalizzato

val threadPoolExecutor = Executors.newFixedThreadPool(2)
val executionContext = ExecutionContext.fromExecutor(threadPoolExecutor)
val customScheduler = ExecutionContextScheduler(executionContext)
Observable.from(List(1,2,3)).observeOn(customScheduler)
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top