如何将此 rxjava/rxkotlin flatMap 转换为 lambda 表达式?
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()
}
})
这应该可以。
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
})
实际上,return@flatMap
不是必需的,所以下面也可以。此外,如果您不需要实际实现的订户的所有方法,则只有 onNext
和 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() }
)
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()
}
})
这应该可以。
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
})
实际上,return@flatMap
不是必需的,所以下面也可以。此外,如果您不需要实际实现的订户的所有方法,则只有 onNext
和 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() }
)