考虑使用 RxJS的示例。
类型A:[使用过滤器]
this.userService.afAuth.authState
.pipe(filter(user => !!user))
.subscribe( _ => this.router.navigate(["/anything"]) )
类型B:[如果使用,则
this.userService.afAuth.authState
.subscribe( user => {
if(!!user) this.router.navigate(["/anything"])
})
第一季度。我们如何比较效果?
第二季度。推荐哪个,为什么?
答案 0 :(得分:1)
第一季度。我们如何比较效果?
您可以使用https://jsperf.com/创建性能测试。我可以告诉您,“ B型”必须执行得更好,因为涉及的函数调用较少。仅当您经常真正调用该函数(大概以每秒10,000次调用)时,这才会引起注意。对于典型的用例,不会有什么区别。
第二季度。推荐哪个,为什么?
从设计的角度来看,建议使用“ A型”。它具有更具说明性的语法,因此更易于替换或重用。例如,您的filter
管道可以提取到可重复使用的管道中并使用多次。如果您的谓词在某个时候发生了变化,则只需更改一次即可。