最初の値に基づいて2つのストリームをグループ化して結合したいと考えています。具体例で最初のものに基づいて2つのストリームをグループ化して結合するにはどうすればよいですか?
たびに第一の流れの変化を説明するために、私は(すなわち、1値3、及び図6)は、第2のストリームと値を結合したいが、即時次の値をスキップ。
私はReactiveCocoaをiOSで使用していますが、他のリアクティブなフレームワークを使用している例も歓迎します。 ReactiveCocoaで
最初の値に基づいて2つのストリームをグループ化して結合したいと考えています。具体例で最初のものに基づいて2つのストリームをグループ化して結合するにはどうすればよいですか?
たびに第一の流れの変化を説明するために、私は(すなわち、1値3、及び図6)は、第2のストリームと値を結合したいが、即時次の値をスキップ。
私はReactiveCocoaをiOSで使用していますが、他のリアクティブなフレームワークを使用している例も歓迎します。 ReactiveCocoaで
私の現在の実装:
var cook = MutableProperty("")
var ingredient = MutableProperty("")
cook.signal.observeNext { cook in
print(">", cook)
}
let skipFirst = cook.signal
.flatMap(.latest) { cookValue in
return ingredient.signal
.map { ingredientValue in
"\(cookValue) \(ingredientValue)"
}
.skip(first: 1)
}
skipFirst.observeNext { str in
print(">>", str)
}
// Send values
cook.value = "grill"
ingredient.value = "asparagus"
ingredient.value = "beef"
cook.value = "fry"
ingredient.value = "ice cream"
ingredient.value = "donut"
ingredient.value = "shoe"
cook.value = "steam"
ingredient.value = "egg"
ingredient.value = "lettuce"
この版画:
> grill
>> grill beef
> fry
>> fry donut
>> fry shoe
> steam
>> steam lettuce
しかしこれは、私はまた、各グループの最初の値を使用したい場合、私はflatMap
を繰り返す必要があることを意味非常にドライではないようです。 JavaScriptで
cook.signal
.flatMap(.latest) { cookValue in
return ingredient.signal
.map { ingredientValue in
"\(cookValue) \(ingredientValue)"
}
.take(first: 1)
}
.observeNext { str in
print("**>", str)
}
、それが(ただしテストされていない)のようになります。
const result$ = a$.flatMapLatest(a => b.skip(1).map(b => {a,b}))
何これが行うことになっている:到来するごとに、
制約:
ニースの図である必要があります。