Hellow,我正在尝试创建可观察(OBS)和主题(SUB)的功能,它存储来自OBS的最后一项,而SUB有F值, 当SUN变为T
时,发出它(并且只发出它) OBS ---a----b----c----d----e----f----g----h-----
SUB ------F----------T------------F-------T-----
OUT -----------------c--------------------h-----
我试图用
来解决这个问题OBS.window(SUB)
.withLatestFrom(SUB)
.switchMap(([window, status]) => {
if(status === F) {
return window.combineLatest(SUB, (cmd, status) => {
if(status === T) {
return null;
};
return cmd;
}).last((e) => {
return !!e;
})
}
return Observable.empty<Command>();
}).filter((cmd) => {
return !!cmd;
})
但它不起作用
答案 0 :(得分:2)
所以看起来你想要这样的东西:
SUB
// Only emit changes in the status
.distinctUntilChanged()
// Only forward true values down stream
.filter(t => t === T)
// Only emit the latest from OBS when you get a T from SUB
// Remap it so only cmd is forwarded
.withLatestFrom(OBS, (_, cmd) => cmd)
答案 1 :(得分:2)
我找到了自己的解决方案:
---a----b----c----d----e----f----g----h-----
------F----------T------------F-------T-----
-----------------c--------------------h-----
此变体具有下一个行为
---a--------------d----e----f----g----h-----
------F----------T------------F-------T-----
--------------------------------------h-----
如果F和T之间的窗口为空,并且不生成输出
{{1}}