【发布时间】:2021-04-15 20:05:30
【问题描述】:
我对 rxjs 非常陌生,我只是想知道通过管道流并点击它来设置类属性是否可以,或者我应该在订阅中进行。对我来说,无论哪种方式都有效,只是想知道是否可以按照我认为适合我的眼睛去做,或者有什么我不知道的。
Typescript 代码演示两种方式:
export class ViewComponent implements OnInit {
applicant = {};
constructor(public route: ActivatedRoute, private store: Store<any>) {}
ngOnInit() {
this.route.paramMap.pipe(
switchMap(params => this.store.select(state => state.applicants.entities[params.get('id')])),
tap(applicant => this.applicant = applicant)
).subscribe();
}
}
对
export class ViewComponent implements OnInit {
applicant = {};
constructor(public route: ActivatedRoute, private store: Store<any>) {}
ngOnInit() {
this.route.paramMap.pipe(
switchMap(params => this.store.select(state => state.applicants.entities[params.get('id')]))
).subscribe(applicant => this.applicant = applicant);
}
}
【问题讨论】:
-
有趣的问题。我在处理路由参数时总是做第二个,但不是出于任何特殊原因。
-
我已经投票结束,主要是基于意见,但我会选择第二个。行为没有区别,但使用
tap意味着您将导入更多实际需要的代码。 -
但是tap不是常用运算符之一吗?我认为无论如何您最终都会将其导入某个地方,并且在捆绑后它的大小不会有任何差异。在我看来,在管道中做所有事情更容易理解,只是在视觉上。
-
使用 Rxjs 5.5+ 导入,您将不会使用全局
tap导入/将其添加到 Observable 原型中。它确实会成为您程序中的额外代码。 -
真的吗?!那么所有这些 tree-shaking、webpacking、commonchunking 等等都会导致 tap 重复十次?这对我来说很奇怪。
标签: angular typescript rxjs subscribe tap