Observable

interface Observable<T> : Disposable

Represents an observable object that emits updates to registered observers when its value changes. Registration changes take effect on later emissions.

Observers are notified as soon as the value changes, while other observables depending on the same change may not have been updated yet. A callback must therefore not rely on state it does not observe: a result depending on several observables must observe all of them, so that it is recomputed once each is updated.

Type Parameters

T

The type of the value being observed.

Inheritors

Properties

Link copied to clipboard
abstract val current: T

The current state or value of the observable.

Link copied to clipboard

Whether any callback is currently registered.

Link copied to clipboard
abstract val observerCount: Int

How many callbacks are currently registered.

Functions

Link copied to clipboard
fun <T> Observable<Option<T>>.currentOrNull(): T?

Retrieves the current value of the observable if present, or null if no value is available.

Link copied to clipboard
abstract override fun dispose()

Unregisters every callback registered with this observable.

Link copied to clipboard
abstract fun <S> map(transform: (T) -> S): Observable<S>

Transforms the current observable into a new observable by applying the specified transformation function to its emitted values.

Link copied to clipboard
abstract fun <O, R> mergeWith(other: Observable<O>, merge: (T, O) -> R): Observable<R>

Combines the current observable with another observable, producing a new observable that emits values derived by applying the provided merge function to the current values of both observables.

Link copied to clipboard
abstract fun onChange(notifyOnRegistration: Boolean = true, callback: (T) -> Unit): Disposable

Registers callback to be invoked with every new value of this observable, and right away with the current one if notifyOnRegistration.

Link copied to clipboard
fun <T, R> Observable<T>.switchMap(transform: (T) -> Observable<R>): Observable<R>

Maps the current value of this Observable to an inner observable through transform, and mirrors the inner observable of the most recent value only: whenever this observable emits, the previous inner observable is unsubscribed and the new one is followed.