RXJS CombineLatest最新如何单独触发

时间:2019-01-16 15:04:09

标签: rxjs

作为示例,我构建了fiddle (已更新为答案)

我喜欢它的功能,但是如果我只输入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;
        });

1 个答案:

答案 0 :(得分:2)

对于startWithobs2,您可以仅使用obs3运算符:

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