1

我正在尝试将 2 个管道运算符插入到管道函数中,但我想按条件应用第一个,否则,只会应用第二个。

这就是它现在没有条件的样子:

getData(query).pipe(setLoding(this.store),tap(//some actions here...))

setLoading是一个秋田管道,我希望它可以应用一些布尔条件。

我尝试使用 rxjs iif(),但收到一个错误,因为setLoding它不是SubscribableOrPromise.

谁能想到另一种方式?

4

1 回答 1

1

使用 rxjs iif,您可以有条件地编写可观察对象,但它不用于处理运算符。

由于setLoading在您的情况下是运算符,因此不能与 . 一起使用iif。要setLoading在管道中有条件地使用,您必须编写类似于 -

getData(query)
.pipe(
  condition ? setLoading(this.store): tap(() => /* some other action */ )
)

编辑:

如果您不想在 else 情况下执行任何操作并tap始终执行,则需要使用identity运算符。

getData(query)
.pipe(
  condition ? setLoading(this.store): identity,
  tap(() => /* some other action */ )
)
于 2021-05-05T16:25:54.607 回答