私はscala observablesをcouchbaseから取得するためにmap、flatMap、zipを使用して結果を変換しています。問題は、アイテムがcouchbaseに存在しない場合、たとえば.zip
はonCompleteだけ呼び出されないことです。例:oncompleteのみが呼び出されたときのscala rx observables上のマッピング
import rx.lang.scala._
def getIdsWithValues(ids: Seq[String]): Map[K, V] = {
val values = Observable.from(keyValueIds).flatMap(id => couchbaseBucket.async().get(id))
values.zip(Observable.from(ids)) // zip is not called if no row in couchbase with id.
...
}
は、だから私は望んでいた:
- 戻るkのマップ - > V
- は私が返さVにkが(私はVのようなものであることが予想.zipのカップルをみましょう存在しない場合
None
。 - を私はジップがまったく項目がDBに存在しない場合は呼び出されませんでした見た。
上記のコードでは、ids
の入力パラメータをスキャンし、zipで値がzipされていないものについては、その値にidを追加するが、別のフローを追加するようなものであるため、zipに既存の行と存在しない行の両方を処理させたい。
どうすればよいですか? .zip
は、既存の行と存在しない行の両方をどのように処理できますか?
'.materialize()。取る(1).MAP(RES =>もし(res.isOnComplete())(ID、なし)他(ID、いくつかの(res.getValueが))'置き換えることができますちょうど '.headOption'によって。 –