RxJS性能比较中的If vs Filter

时间:2019-02-08 16:35:19

标签: javascript typescript rxjs

考虑使用 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"])
       })
  

第一季度。我们如何比较效果?

     

第二季度。推荐哪个,为什么?

1 个答案:

答案 0 :(得分:1)

  

第一季度。我们如何比较效果?

您可以使用https://jsperf.com/创建性能测试。我可以告诉您,“ B型”必须执行得更好,因为涉及的函数调用较少。仅当您经常真正调用该函数(大概以每秒10,000次调用)时,这才会引起注意。对于典型的用例,不会有什么区别。

  

第二季度。推荐哪个,为什么?

从设计的角度来看,建议使用“ A型”。它具有更具说明性的语法,因此更易于替换或重用。例如,您的filter管道可以提取到可重复使用的管道中并使用多次。如果您的谓词在某个时候发生了变化,则只需更改一次即可。