kotlin - Rx - 将新输入与之前的输出相结合

标签 kotlin rx-java2 reducers

我有以下 reducer 案例:

    class XYZ Reducer(private val state: BehaviorRelay<State>) {

     override fun invoke(events: Observable<Any>): Observable<State>  =   
              events.ofType(Event::class.java).map { event ->
              handleFieldClicked(event, state.value)
    }

由于 reducer 需要 2 个信息:
  • 新事件
  • 以前的状态

  • 我正在将状态的行为中继传递给 reducer 。
    我试图找到一种方法来访问 map{} 中的先前状态和当前事件,就像扫描一样,我发现的只是scan()将当前事件和先前事件作为参数。

    你知道比传递 behaviorRelay 更好的方法(运算符(operator)吗?)直接作为国家?

    最佳答案

    你可以结合flatMap()take(1) :

    class XYZ Reducer(private val state: BehaviorRelay<State>) {
        override fun invoke(events: Observable<Any>): Observable<State>  =   
            events.ofType(Event::class.java).flatMap { event ->
                state.take(1).map { state ->
                    handleFieldClicked(event, state)
                }
            }
    }
    

    关于kotlin - Rx - 将新输入与之前的输出相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53050349/

    相关文章:

    android - 如果所有值均为零,MPAndroid 条形图在中间显示零值

    android - Unresolved reference : font in Android Studio

    java - 使用 RxJava 链接方法调用

    安卓 RxJava : Chaining two requests and doing some logic inbetween

    javascript - 在 Redux sub-reducers 中设置初始状态

    angular - 带分页的 NgRx 存储

    android - 错误 : failed linking references. -> QueuedJob

    java - 无法解析方法 'subscribeon(io.reactivex.scheduler)'

    java - java.lang.Exception:java.lang.ClassCastException:org.apache.hadoop.io.Text无法转换为org.apache.hadoop.io.IntWritable

    kotlin - 如何从 Kotlin 中的字符串创建枚举?