Как добавить элементы к наблюдаемым

Как добавить элементы в Observable?

Это код:

 this.logEntries = this.controllerService.getLog(this.controller.remoteID, this.skip, this.max);

        this.logEntries.subscribe(a => {
            this.allLogEntries.add(this.logEntries)
        });

и вот их объявления:

 logEntries: Observable<Log[]>;
    allLogEntries: Observable<Log[]> = Observable.empty<Log[]>();

Я хочу добавить элементы в allLogEntries, поскольку они извлекаются из веб-службы. Как это сделать?

Ответ 2

Если вы хотите объединить два наблюдаемых вместе, вам нужно, например, combineLatest:

Observable
  .combineLatest(this.logEntries, this.allLogEntries)
  .subscribe(...);

Это дает вам доступ к последним значениям из каждого наблюдаемого, обновляемому по мере их изменения, и вы можете комбинировать их по мере необходимости.


Если вы хотите, чтобы вы могли вручную вводить записи в один из исходных наблюдаемых, сделайте Subject:

this.logEntries = new Subject();
Observable
  .combineLatest(this.logEntries, this.allLogEntries)
  .subscribe(...);

то вы можете вызвать обновление с помощью:

this.logEntries.next(...);

и ваша подписка получит новый logEntries вместе с последним allLogEntries. В зависимости от вашего поведения вы можете использовать ReplaySubject или BehaviourSubject вместо vanilla Subject.

Ответ 3

Взгляните на BehaviorSubject:

Это a Observable, где вы можете нажать новый элемент как содержащий объект.