Комбайн RXJSПоследний, как стрелять индивидуально и вместе - PullRequest
0 голосов
/ 16 января 2019

В качестве примера я построил скрипку (обновлено с ответом)

Мне нравится то, что он делает, но то, что я хотел бы, это запускать, если я только набираю 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 голосов
/ 16 января 2019

Вы можете просто использовать оператор 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]) => { ... })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...