除了当前的答案,您还可以使用withLatestFrom
. 请注意,combineLatest
语义withLatestFrom
在细微之处有所不同:
- 每当组合源之一发出一个值时, combineLatest 都会发出一个值(只要每个源可观察序列都发出至少一个元素)
- 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
也可以正常工作),将这两个运算符牢记在心仍然很好类似的未来用例。
最后一件事,combineLatest
在这种情况下真的对你有用吗?似乎textValueSubmit$
每次textChange$
火灾都会有排放。这是预期的行为吗?