【发布时间】:2016-11-16 11:34:21
【问题描述】:
我有一段在命令式语言中可能看起来像这样的流程:
if (something1()) {
try {
return loadDataFrom1();
} catch (err) { }
}
if (something2()) {
try {
return loadDataFrom2();
} catch (err) { }
}
if (something3()) {
try {
return loadDataFrom3();
} catch (err) { }
}
return someSafeDefault();
条件不是互斥的。有可能something1() 和something2() 都为真,在这种情况下loadDataFrom2() 应该在loadDataFrom1() 失败时发生。
现在我需要使用 rxjs 5 来实现这一点,条件以及处理 Observables 的操作。
我可以通过创建 Observables 并在各处订阅来轻松实现回调地狱等价物,但由于许多显而易见的原因,这很糟糕。
什么是好的、惯用的方法?
【问题讨论】:
-
条件是互斥的(即 if...else if....else if?)
-
@Meir 查看更新。
-
somethingX()和loadDataFromX()是什么?如果这些不返回 Observables,那么您可以只使用map()或concatMap(),具体取决于您想要做什么。 -
条件和操作都在处理(异步)observables。