У меня есть кусок потока, который в императивном языке может выглядеть следующим образом:Идиоматической если-иначе цепи с гм/rxjs
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 и подписываясь повсюду, но это плохо по многим очевидным причинам.
Что такое хороший, идиоматический способ сделать это?
является условием взаимоисключающим (то есть это, если ... else if .... else if?) – Meir
@Meir См. обновление. –
Что такое 'somethingX()' и 'loadDataFromX()'? Если они не возвращают Observables, вы можете использовать только 'map()' или 'concatMap()' в зависимости от того, что вы хотите сделать. – martin