現在の回答に加えて、 を使用することもできますwithLatestFrom
。combineLatest
とwithLatestFrom
セマンティクスが微妙な点で異なることに注意してください。
- 結合されたソースの 1 つが値を発行するたびに、combineLatest は値を発行します (ソースの監視可能なシーケンスのそれぞれが少なくとも 1 つの要素を発行している限り) 。
- withLatestFrom は、結合ソースが値を発行する場合にのみ値を発行します
したがって、たとえば次のことができます。
const textChange$ = DOMSource.select('input').events('change')
.pluck('target', 'value')
const submit$ = DOMSource.select('form').event('submit')
.do(ev => ev.preventDefault)
const textValueSubmit$ = submit$.withLatestFrom(textChange$, function (submit, textChange){...});
これがあなたの特定のユースケース以上のものをカバーしていない場合でも (ここでは送信イベントによって渡される値は気にしないので、提案されているようにsample
うまく動作します)、別の場合のためにこれら 2 つの演算子を念頭に置いておくことをお勧めします。同様の将来のユースケース。
最後combineLatest
に、この場合、本当にうまくいきますか? 発火textValueSubmit$
するたびに発光するようです。textChange$
それは意図した動作ですか?