RxJS Добавить заметку после подписки - PullRequest
0 голосов
/ 25 сентября 2019

Есть ли способ добавить еще один элемент после подписки на наблюдаемое?

observable = timer(1000,2000).take(5)
observable.subscribe()
//Now I want to add one more element to observable....

Ответы [ 2 ]

2 голосов
/ 25 сентября 2019

Может быть, предмет - это то, что вы ищете, субъект является как наблюдаемым, так и наблюдателем.

const { Subject, timer, fromEvent } = rxjs;
const { take } = rxjs.operators;

let subject$ = new Subject();

subject$.subscribe(val =>  { console.log(val); });

timer(1000,2000).pipe(take(5)).subscribe(val => { subject$.next(val); });

fromEvent(document.getElementsByTagName('button')[0], 'click').subscribe(() => {
  subject$.next('clicked');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>
<button>Click</button>
1 голос
/ 25 сентября 2019

Вы можете использовать комбинацию объединить и Предметы

const { Subject, timer, merge } = rxjs;
const { take } = rxjs.operators;

let source_1 = timer(1000,2000).pipe(take(5));
let source_2 = new Subject();

let final_source = merge(
  source_1,
  source_2
);

final_source.subscribe(e => console.log(e));

source_2.next('jabadabadoo!');
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...