6
    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()
                }
            })
4

2 回答 2

5

这应该做。

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
        })
于 2018-02-12T19:13:31.917 回答
4

实际上,return@flatMap不需要,所以下面也可以。此外,如果您不需要实际实现的订阅者的所有方法,那么只有onNextand会出现重载onError。IDE 的提示在这里有很大帮助 - 输入方法时,按Ctrl+P,它会显示可用的重载。键盘快捷键本质上是“显示参数”。

    Observable.just(1)
        .flatMap { Observable.just(it * 10) }
        .flatMap { Observable.just(it * 20) }
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
                { Log.d("result", "" + it) },
                { it.printStackTrace() }
                  )
于 2018-08-01T09:23:17.087 回答