作为一个例子,我已经构建了小提琴(更新了答案)
我喜欢它的作用,但我希望它做的是如果我只输入 input1 并给我 2 和 3 的"空"结果,它就会开火。
这样的事情可能吗?(在示例中,所有输入都必须有一个值)
var obs1 = Rx.Observable.fromEvent(input1, 'input').map((e) => e.target.value);
var obs2 = Rx.Observable.fromEvent(input2, 'input').map((e) => e.target.value);
var obs3 = Rx.Observable.fromEvent(input3, 'input').map((e) => e.target.value);
var counter = 0;
Rx.Observable.combineLatest(obs1, obs2, obs3)
.subscribe(([ res1, res2, res3 ]) => {
span.textContent = 'Result: ' + ++counter + ' -> ' + res1 +
' / ' +
res2 +
' / ' +
res3;
});
您可以使用 startWith
运算符进行obs2
和obs3
:
combineLatest(
obs1.startWith(undefined),
obs2.startWith(undefined),
obs3.startWith(undefined)
).pipe(skip(1)) //skip the initial undefined result set
.subscribe(([res1, res2, res3]) => { ... })