typescript 在RxJS中是否存在类似于tap的忽略通知类型的东西?

rvpgvaaj  于 2023-03-04  发布在  TypeScript
关注(0)|答案(2)|浏览(123)

一般来说,tap管道是用于日志记录等副作用的。在我的例子中,我只想将isLoading属性设置为false。关键是,这个地方不应该关心它是下一个还是错误类型的通知,但tap仍然需要区分它才能工作,所以我需要复制代码:

something.pipe(
    tap({
        next: () => {
            this.isLoading = false;
        },
        error: () => {
            this.isLoading = false;
        }
    }),
)

是否有任何管道,或某种方式来配置tap,以便我只提供一个回调函数,无论通知类型是什么都会运行?

something.pipe(
    anyTap(() => {
        this.isLoading = false;
    }),
)

无论something返回什么,anyTap都会运行它的回调函数。

q3qa4bjr

q3qa4bjr1#

something.pipe(
  finalize(() => {
    this.isLoading = false;
  });
)
dhxwm5r4

dhxwm5r42#

以下是定义anyType运算符的方法:

function anyTap<T>(fn: () => void): MonoTypeOperatorFunction<T> {
  return tap({
    next: _ => fn(),
    error: _ => fn(),
    complete: fn
  });
}

现在,您可以按如下方式使用它:

something.pipe(
    anyTap(() => this.isLoading = false),
)

相关问题