RXJS组合最新的如何单独和一起射击



作为一个例子,我已经构建了小提琴(更新了答案)

我喜欢它的作用,但我希望它做的是如果我只输入 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 运算符进行obs2obs3

combineLatest(
  obs1.startWith(undefined),
  obs2.startWith(undefined),
  obs3.startWith(undefined)
).pipe(skip(1)) //skip the initial undefined result set
.subscribe(([res1, res2, res3]) => { ... })

最新更新