Come posso creare un "programmatore" per il metodo di "Osserveon`?
-
21-12-2019 - |
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?
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)
.