如何将商品附加到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,因为它们是从Web服务获取的。我该怎么做?
答案 0 :(得分:7)
也许scan
运营商可能会对您感兴趣。这是一个示例:
obs.startWith([])
.scan((acc,value) => acc.concat(value))
.subscribe((data) => {
console.log(data);
});
有关详细信息,请参阅此问题:
答案 1 :(得分:2)
如果您想要将两个可观察对象连接在一起,则需要例如combineLatest
:
Observable
.combineLatest(this.logEntries, this.allLogEntries)
.subscribe(...);
这使您可以访问每个observable的最新值,并在其中任何一个更改时更新,并且您可以根据需要组合它们。
如果您希望能够手动将条目推送到其中一个源可观察对象,请将其设为Subject
:
this.logEntries = new Subject();
Observable
.combineLatest(this.logEntries, this.allLogEntries)
.subscribe(...);
然后您可以使用以下命令调用更新:
this.logEntries.next(...);
您的订阅将收到新的logEntries
以及最新的allLogEntries
。根据您的行为,您可以使用ReplaySubject
或BehaviourSubject
代替香草Subject
。
答案 2 :(得分:2)
它是Observable
,您可以在其中将新项目推送为包含对象。