我正在构建一个聚合器类,该类将多个可观察对象连接起来,并从这些可观察对象中发出单个发射序列:
有5个输入源输入,其中1个输入来自ReplaySubject
。
是否可以在此聚合器中管理订阅,以允许其中一个来源“断开连接”而不会破坏整个链条?
能否保留[Observable: Subscription
]的词典来帮助取消特定的订阅?
答案 0 :(得分:1)
听起来像https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/dataset-datatable-dataview/copying-dataset-contents(如下所示)可能会让您受益。
您的商店已绑定到您的输入源。 (如myInput.bind(to: myStore).disposed(by: bag)
中所示),并且输出绑定到商店的状态。 (如myStore.state.bind(to: myOutput).disposed(by: bag)
)
输入可以通过断开连接来完成,而输出可以通过处理相关的一次性设备来断开。
Reducer的工作是将输入转换为输出。
//
// Store.swift
//
// Created by Daniel Tartaglia on 3/11/17.
// Copyright © 2017 Haneke Design. MIT License
//
import Foundation
import RxSwift
class Store<State, Action> {
init(initialState: State, reducer: @escaping (State, Action) -> State) {
state = actions
.scan(initialState, accumulator: reducer)
.startWith(initialState)
.share(replay: 1)
}
let state: Observable<State>
private let actions = PublishSubject<Action>()
}
extension Store: ObserverType {
typealias E = Action
func on(_ event: Event<E>) {
actions.on(event)
}
}