问题在于:我有一个简单的组件,它可以呈现一些"历史"消息。当加载app时,它会发出POST请求,获取数据并将数据设置为Observable,如下所示
this.messages$ = Observable.of(messagesAfterPOSTRequest);
其中public messages$: Observable<any>;
此数据通过异步管道在模板中呈现:
let message of messages$ | async
效果很好,但是......
我得到一些&#34;新消息&#34;通过websocket,所以我想更新上一步创建的列表。我正在尝试使用scan()
this.messages$ = this.messages$.scan((accMessage, numMessage) => {
console.log("inside current mesages", accMessage, numMessage)
});
为了更新&#34;当前列表消息,但这个console.logs似乎永远不会工作,即使使用subscribe()
答案 0 :(得分:1)
使用Subject
的实例并将消息推入其中:
const subject$ = new Subject();
...
subject.next(messagesAfterPOSTRequest);
...然后使用async
管道以相同方式使用模板。
如果您希望能够获取以前的消息,也许还可以查看ReplaySubject
或BehaviorSubject
个类。