RxJS:我怎样才能用可观察量做一个“如果”
RxJS: How can I do an "if" with Observables?
>假设我有两个可观察量,一个我想监听一个可观察量的变化,如果另一个符合某个条件。我用zip
试过了,但似乎只有在两个可观察量都发生变化时,我才会收到通知,但如果另一个可观察量的条件为真,我希望收到一个可观察量的每次更改的通知。
我尝试过:
var firstState = new Rx.BehaviorSubject(undefined);
var secondState = new Rx.BehaviorSubject(undefined);
Rx.Observable.zip(firstState, secondState, function (first, second) {
return {
first: first,
second: second
}
}).filter(function (value) {
return value.first !== undefined;
}).subscribe(function (value) {
// do something with value.second
});
我注意到有一个Rx.Observable.if
,但我无法让它工作。
使用可暂停:
secondState
.pausable(firstState.map(function (s) { return s !== undefined; }))
.subscribe(function (second) {
// only occurs when first is truthy
});
Zip 的字面意思是这样。它以两个不同的顺序压缩相应的元素。您要实现的目标可以通过许多不同的方式完成。
firstState.combineLatest(secondState, function(f, d) {
return f == 10 && d > 10;
}).filter(function(val) { return val })
.subscribe(function(v) { console.log(v); });
firstState.onNext(10);
secondState.onNext(20);
这是方法之一。
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 一个密码测试程序,如果存在空格,它会提醒用户
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如果另一个属性相同,请删除该属性
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- Last.fm API发送2个曲目时,我要求一个,如果我正在听一首歌
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 如果满足某些条件,我如何才能创建一个只有值的对象
- 我有多个复选框,并希望为其中 2 个制定规则,以便如果我选择 1 个,则无法选择另一个
- 如果显示另一个折叠的图元,如何隐藏该图元
- 如果语句为true,则对一个或多个ng进行角度检查
- Jquery:如果选中了另一个按钮,则为未选中按钮
- 如果一个手风琴发出咔嗒声,如何最大限度地减少其他手风琴
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- 我有一个字段计算,如果结果低于 60,则需要显示最小值
- notify.js没有'如果另一个窗口被聚焦,则不显示通知
- CTRL S函数添加一个S.如果光标留在输入字段中,如何停止它
- RxJS:我怎样才能用可观察量做一个“如果”
- 这个“开关”应该是一个“如果”——为什么
- 我如何做一个如果与价值的胡子.js