RxJava combineLatest quick example by Kotlin

RxJava’s combineLatest is very convenient but I can use it difficultly because it has many overloads.
So I wrote the code snippet for combineLatest.

<span>val</span> <span>name</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>String</span><span>>()</span>
<span>val</span> <span>age</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>Int</span><span>>()</span>
<span>// Can not omit Type parameters and BiFunction </span>
<span>Observable</span><span>.</span><span>combineLatest</span><span><</span><span>String</span><span>,</span> <span>Int</span><span>,</span> <span>String</span><span>>(</span>
<span>name</span><span>,</span> <span>age</span><span>,</span> <span>BiFunction</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>})</span>
<span>.</span><span>subscribe</span><span>({</span>
<span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span>
<span>})</span>
<span>// If you introduce RxKotlin then you can use type inference</span>
<span>Observables</span><span>.</span><span>combineLatest</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>)</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>}</span>
<span>.</span><span>subscribe</span><span>({</span>
<span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span>
<span>})</span>
<span>// Also we can use Observable array for 1st parameter </span>
<span>// but second parameter to be array, it's not cool.</span>
<span>Observable</span><span>.</span><span>combineLatest</span><span>(</span><span>arrayOf</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>),</span> <span>{</span>
<span>val</span> <span>n</span> <span>=</span> <span>it</span><span>[</span><span>0</span><span>]</span> <span>as</span> <span>String</span>
<span>val</span> <span>a</span> <span>=</span> <span>it</span><span>[</span><span>1</span><span>]</span> <span>as</span> <span>Int</span>
<span>"$n - age:${a}"</span> <span>})</span>
<span>.</span><span>subscribe</span><span>({</span>
<span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span>
<span>})</span>
<span>name</span><span>.</span><span>onNext</span><span>(</span><span>"saito"</span><span>)</span>
<span>age</span><span>.</span><span>onNext</span><span>(</span><span>24</span><span>)</span>
<span>name</span><span>.</span><span>onNext</span><span>(</span><span>"yoshida"</span><span>)</span>
<span>val</span> <span>name</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>String</span><span>>()</span>
<span>val</span> <span>age</span> <span>=</span> <span>PublishSubject</span><span>.</span><span>create</span><span><</span><span>Int</span><span>>()</span>

<span>// Can not omit Type parameters and BiFunction </span>
<span>Observable</span><span>.</span><span>combineLatest</span><span><</span><span>String</span><span>,</span> <span>Int</span><span>,</span> <span>String</span><span>>(</span>
        <span>name</span><span>,</span> <span>age</span><span>,</span> <span>BiFunction</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>})</span>
        <span>.</span><span>subscribe</span><span>({</span>
            <span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span>
        <span>})</span>

<span>// If you introduce RxKotlin then you can use type inference</span>
<span>Observables</span><span>.</span><span>combineLatest</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>)</span> <span>{</span> <span>n</span><span>,</span> <span>a</span> <span>-></span> <span>"$n - age:${a}"</span> <span>}</span>
        <span>.</span><span>subscribe</span><span>({</span>
            <span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span>
        <span>})</span>

<span>// Also we can use Observable array for 1st parameter </span>
<span>// but second parameter to be array, it's not cool.</span>
<span>Observable</span><span>.</span><span>combineLatest</span><span>(</span><span>arrayOf</span><span>(</span><span>name</span><span>,</span> <span>age</span><span>),</span> <span>{</span>
    <span>val</span> <span>n</span> <span>=</span> <span>it</span><span>[</span><span>0</span><span>]</span> <span>as</span> <span>String</span>
    <span>val</span> <span>a</span> <span>=</span> <span>it</span><span>[</span><span>1</span><span>]</span> <span>as</span> <span>Int</span>
    <span>"$n - age:${a}"</span> <span>})</span>
        <span>.</span><span>subscribe</span><span>({</span>
            <span>Log</span><span>.</span><span>d</span><span>(</span><span>"combineLatest"</span><span>,</span> <span>"onNext - ${it}"</span><span>)</span>
        <span>})</span>


<span>name</span><span>.</span><span>onNext</span><span>(</span><span>"saito"</span><span>)</span>
<span>age</span><span>.</span><span>onNext</span><span>(</span><span>24</span><span>)</span>
<span>name</span><span>.</span><span>onNext</span><span>(</span><span>"yoshida"</span><span>)</span>
val name = PublishSubject.create<String>() val age = PublishSubject.create<Int>() // Can not omit Type parameters and BiFunction Observable.combineLatest<String, Int, String>( name, age, BiFunction { n, a -> "$n - age:${a}" }) .subscribe({ Log.d("combineLatest", "onNext - ${it}") }) // If you introduce RxKotlin then you can use type inference Observables.combineLatest(name, age) { n, a -> "$n - age:${a}" } .subscribe({ Log.d("combineLatest", "onNext - ${it}") }) // Also we can use Observable array for 1st parameter // but second parameter to be array, it's not cool. Observable.combineLatest(arrayOf(name, age), { val n = it[0] as String val a = it[1] as Int "$n - age:${a}" }) .subscribe({ Log.d("combineLatest", "onNext - ${it}") }) name.onNext("saito") age.onNext(24) name.onNext("yoshida")

Enter fullscreen mode Exit fullscreen mode

原文链接:RxJava combineLatest quick example by Kotlin

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
The sacrifices you make today will pay dividends in the future.
今天的牺牲和努力未来都会有回报
评论 抢沙发

请登录后发表评论

    暂无评论内容