- Reactive Programming in Kotlin
- Rivu Chakraborty
- 303字
- 2021-07-02 22:26:41
Understanding the Observable.create method
You can create your own Observable with the Observable.create method at any time. This method takes an instance of the ObservableEmitter<T> interface as a source to observe on. So, let's consider this following example:
fun main(args: Array<String>) { val observer: Observer<String> = object : Observer<String> { override fun onComplete() { println("All Completed") } override fun onNext(item: String) { println("Next $item") } override fun onError(e: Throwable) { println("Error Occured ${e.message}") } override fun onSubscribe(d: Disposable) { println("New Subscription ") } }//Create Observer val observable:Observable<String> = Observable.create<String> {//1 it.onNext("Emit 1") it.onNext("Emit 2") it.onNext("Emit 3") it.onNext("Emit 4") it.onComplete() } observable.subscribe(observer) val observable2:Observable<String> = Observable.create<String> {//2 it.onNext("Emit 1") it.onNext("Emit 2") it.onNext("Emit 3") it.onNext("Emit 4") it.onError(Exception("My Custom Exception")) } observable2.subscribe(observer) }
First, we created an instance of the Observer interface as the previous example. I will not elaborate on observer, as we have already seen an overview in the previous example, and we will see it in detail later in this chapter.
On comment 1, we created Observable with the Observable.create method; we emitted four string from Observable with the help of the onNext method, and then notified it is complete with the onComplete method.
On comment 2, we did almost the same, except here instead of calling onComplete, we called onError with a custom Exception.
Here is the output of the program:

The Observable.create method is useful, especially when you are working with a custom data structure and want to have control over what values are getting emitted. You can also emit values to Observer from a different thread.
Note that the Observable contract (http://reactivex.io/documentation/contract.html) states that Observable must issue notifications to observers serially (not in parallel). They may issue these notifications from different threads, but there must be a formal happens—before relationship between the notifications.
- 從0到1:數據分析師養成寶典
- 大數據:規劃、實施、運維
- Oracle RAC日記
- SQL Server 2012數據庫管理教程
- Visual Studio 2013 and .NET 4.5 Expert Cookbook
- Doris實時數倉實戰
- Deep Learning with R for Beginners
- Oracle 11g數據庫管理員指南
- 云原生架構:從技術演進到最佳實踐
- MySQL性能調優與架構設計
- Mastering Java for Data Science
- 數據可視化五部曲
- Unity 4.x Game AI Programming
- Nagios Core Administrators Cookbook
- AutoCAD基礎與應用精品教程(2008版)