2017-07-21 10 views
0

私は観測可能なオブジェクトを持っていて、ストリームを開いたまま新しい値を出すようにしながら、将来は。これどうやってするの?リアクティブプログラミング:ストリームがある時間アイドル状態のときに指定された要素を送出する

元のストリームを元のストリームとマージし、元のストリームをデバースしていますが、デバースした値を必要なデフォルトにマッピングしています。

擬似コード:私は、元のストリームがちょうどタイムアウトトリガとし、チャンス、デフォルト値でアイテムを放出する、次のようないくつかの境界例に実行するかどうかはわからないけれども

defaultDebounced = originalStream.debounce(time).map({x -> myDefaultValue}) 
myStream = rx.merge(originalStream, defaultDebounced) 

その後に放出される。

original: ----A----B----------------------C------------ 
debounced: -----------------------<timeout>X------------ 
merged: --------------------------------CX----------- 

また、第1の観察は、デフォルト値を放出するデバウンスために少なくとも一つのアイテムを放出しなければならない欠点があります。

注:実装にかかわらず、適切なrx方法を知っていますが、RxSwiftで作業している場合に備えて、私は適切なrx方法を知りたいと思います。私はついにやった

答えて

0

されました:

originalStream.flatMapLatest({x -> 
    return Observable.timer(30, scheduler: MainScheduler.instance) 
     .map{_ -> defaultValue} 
     .startWith(x) 
}) 
関連する問題