2017-11-02 10 views
0

からemitedイベントをフィルタリングするflatMapFirstを防ぐために、私はこのようなコードをより少なく持っている:RxSwift - どのように加入者

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) 

だから私は基本的には、いくつかの状況では、ネットワーク要求を繰り返す新しいonNextイベントを放出しています。

イベントをこのように放出すると、flatMapFristによって引き続き除去されるという問題があります。私がそれを包み込むならば

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(10)) { 
    self.toggleLikeSubject.onNext() 
} 

それは働く。

このイベントがフィルタリングされないようにするにはどうすればよいですか?

答えて

0

私の知る限りでは、標準溶液は次のようになります -

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