Search code examples
androidlambdarx-javaflatmaprx-kotlin

How can I convert this rxjava/rxkotlin flatMap into lambda expression?


    Observable.just(1)
            .flatMap(object : Function<Int, Observable<Int>> {
                override fun apply(integer: Int): Observable<Int> {
                    return Observable.just(integer * 10)
                }
            })
            .flatMap(object : Function<Int, Observable<Int>> {
                override fun apply(integer: Int): Observable<Int> {
                    return Observable.just(integer * 20)
                }
            })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(object : Observer<Int> {
                override fun onComplete() {
                }

                override fun onSubscribe(d: Disposable) {
                }

                override fun onNext(t: Int) {
                    Log.d("result", "" + t)
                }

                override fun onError(e: Throwable) {
                    e.printStackTrace()
                }
            })

Solution

  • This should do.

    Observable.just(1)
            .flatMap { 
                return@flatMap Observable.just(it*10)
            }.flatMap { 
                return@flatMap Observable.just(it*20)
            }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                //OnNext
               Log.d("result", "" + it)
            },{
              it.printStackTrace()
                //on error
            },{
                //on complete
            })