【发布时间】:2020-10-14 01:05:10
【问题描述】:
我无法理解该怎么做。
最初我有一个方法(获取评论),使用下面的订阅方法,当评论返回到组件时,它们被连接到任何现有评论,我用异步管道重新实现了它,所以现在我'我只是将评论设置为reviews$,而不是像以前那样连接它们,这不是我想要的。
// initial method
reviews: IReview[] = [];
getReviews() {
this.membersService.getReviews(this.member.id, this.skip)
.subscribe(response => {
this.reviews = [...this.reviews, ...response];
this.skip = this.skip + 10;
});
}
这是我修改后的获取评论的方法,但不知道如何像以前那样连接结果。我该怎么做?
仅供参考 - 我还注意到这个 getReviews() 现在被多次触发。我不确定这是来自管道还是水龙头方法。
reviews$: Observable <IReview[]> ;
getReviews() {
this.reviews$ = this.membersService.getReviews(this.member.id, this.skip)
.pipe(
tap(response => {
this.skip = this.skip + 10;
})
);
【问题讨论】:
-
我认为异步管道更适用于可观察对象,但不适用于订阅
-
我添加了一个未测试的答案,但我认为
tap没有返回值,这可能是您订阅后没有获得值的原因 -
您想为此使用扫描运算符来累积一段时间内的响应。
-
您能否在答案中提供一个示例,适用于我的场景?\
-
concatmap 呢?那行得通吗?
标签: html angular typescript asynchronous observable