RxSwift - 如何防止flatMapFirst过滤掉从订阅者发出的事件

时间:2017-11-02 14:02:49

标签: swift reactive-programming rx-swift

我的代码更像是这样:

Path.Combine

所以我在某些情况下基本上会发出新的onNext事件来重复网络请求。

问题是以这种方式发出事件导致它仍然被flatMapFrist过滤掉。如果我将其包装在

let requestResult = someSubject
    .flatMapFirst{ [weak self] _ -> Observable<ResponseClass> in
        return self?.triggerNetworkRequest() ?? Observable.never()
    }.share()

requestResult.subscribe(onNext: { [weak self] response in
    if someCondition {
        self?.someSubject.onNext()
    }
}).addDisposableTo(disposeBag)

它有效。

如何防止此事件被过滤掉?

1 个答案:

答案 0 :(得分:0)

AFAIK,标准解决方案如下所示 -

        let requests = PublishSubject<Observable<ResponseClass>>()
        let requestResult: Observable<ResponseClass> = requests.switchLatest()
        requests.onNext(triggerNetworkRequest()) // repeat whenever you need a fresh response
        // subscribe to 'requestResult'