我们什么时候应该使用RxJS tap操作符?

时间:2019-01-21 12:00:30

标签: rxjs rxjs6

我对the docs不了解。有人可以向我解释吗?

3 个答案:

答案 0 :(得分:2)

大多数运算符按流顺序工作,例如:

source$.pipe(
  map((a: string) => changeAndReturnArray(a)),
  filter((b: string[]) => giveMeOnlySymbolsThatAreAfterNInAlphabet(b)),
  switchMap((c: string[]) => putToSomeObservable(c))
  ....
);

在该示例中,您并没有“中断”流,也不是跳出流来执行某些外部操作。 使用“点击”运算符可以跳出流,您可以在其中:

  • 调用将导致某些副作用的功能,这些功能对于最终用户可能是可见的(例如-显示对话框,显示小吃栏,重定向到其他路线(但我不建议以这种方式使用水龙头))< / li>
  • 为商店调度操作(如果您正在使用-例如ngrx商店)
  • 调试您的代码-> console.log()
  • 任何可能被视为流的“副作用”。

我的个人观点-仅在找不到更好的解决方案时才使用“点击”。跳出流并调用某些副作用可能是一把双刃剑,尤其是当您处理一些更大的应用程序时。副作用总是很难维护,并且您可以毫无理由地完成正在处理魔术的应用程序。

答案 1 :(得分:1)

例如,您可以用它来产生副作用。或者,您可以使用它来查看正在传递的当前值是什么,而不会影响/修改Observable。像console.log()一样,但是在流中。

答案 2 :(得分:-1)

贴花

public tap(nextOrObserver: Observer | function, error: function, complete: function): Observable 

点击是对 do 运算符的替换,该运算符返回的 observable 与您的源可观察的相同。对于每个发出的值,执行副作用。它具有3个可选参数。

  • nextOrObserver:执行副作用的普通Observable对象。
  • 错误:回调源中可观察到的错误。
  • complete:回调以完成源代码。

推荐用于调试目的。