小编whi*_*nge的帖子

withLatestFrom等待所有来源产生一个值

withLatestFrom正常使用RxJS中的运算符:

var combined = source1.withLatestFrom(source2, source3);
Run Code Online (Sandbox Code Playgroud)

...主动收集最近发射的source2source3仅在source1发射时发出所有三个值.

但我无法保证在产生价值之前source2source3将产生价值.相反,我需要等到所有三个来源每个产生至少一个值,然后再让它做. source1withLatestFrom

该合同必须是:如果source1发出然后combined总是最终发射时,其他来源产生最后.如果source1在等待其他源时多次发出,我们可以使用最新值并丢弃先前的值.编辑:作为大理石图:

--1------------2---- (source)
----a-----b--------- (other1)
------x-----y------- (other2)
------1ax------2by--


--1------------2---- (source)
------a---b--------- (other1)
--x---------y------- (other2)
------1ax------2by--


------1--------2---- (source)
----a-----b--------- (other1)
--x---------y------- (other2)
------1ax------2by--
Run Code Online (Sandbox Code Playgroud)

我可以为此创建一个自定义运算符,但我想确保我不会错过使用vanilla运算符执行此操作的明显方法.感觉几乎就像我想要combineLatest的初始发射,然后切换withLatestFrom那时,但我还没有弄清楚如何做到这一点.

编辑:最终解决方案的完整代码示例:

var Dispatcher = new Rx.Subject();
var source1 = Dispatcher.filter(x => x === 'foo');
var source2 = …
Run Code Online (Sandbox Code Playgroud)

rxjs

15
推荐指数
2
解决办法
6422
查看次数

标签 统计

rxjs ×1