【发布时间】:2020-01-01 19:02:23
【问题描述】:
问题:
我有多个条件要检查。其中一些会产生相同的 observable。
流程如下:
- 我检查表单是否保存在本地
- 如果是,则显示用户文本 1
- 如果不是,则检查服务器是否在 DB 中有此表单
- 如果服务器有,那么我显示文本 2
- 如果不显示文本 1
有没有办法避免导致相同结果但被复制粘贴的多个条件?
现在是这个样子
iif(
() => this.savedLocally,
this.showText1(),
this.checkOnServer().pipe(
switchMap(onServer => iif(
() => onServer,
this.showText2(),
this.showText1()
))
)
)
如果还有一个条件,那么它就多了一个级别,在某处重复this.showText1()。
我正在寻找的是重新设计这个逻辑以减少重复。
诀窍是我需要执行三个检查(下一个仅在前一个具有预期结果时执行)并且所有这些都是异步的。
如果它很简单 if 我会使用 if (cond1 && cond2 && cond3) 但这里没那么简单。我有严格的检查顺序,每次检查都取决于之前的结果。
【问题讨论】:
-
我认为没有比这更干净的了。还有其他方法可以在不重复
this.showText1()的情况下做到这一点,但它们最终都会变得更冗长且可读性更低。 -
我会发布一个答案。这将是一个很长的:)
-
@Reactgular 期待 :)
标签: angular typescript rxjs