【发布时间】:2020-09-22 14:10:56
【问题描述】:
我正在使用 rxjs observable 对我的应用程序中发生的一系列步骤进行建模。
伪代码
const steps = [{id: "step1"}, {id: "step2"}, {id: "step3"}]
//... then at some point later do things based on the steps
from(steps).pipe(
concatMap((step) => {
... do stuff with each step, perhaps including needing to go back to previous step
})
)
鉴于这种模式,如果某些条件需要,我该如何模拟“返回”?
例如从 step1 -> step2 -> step3 -> step2 -> step3
据我所知,rxjs 似乎是非常严格的单向线性的。我还没有找到一种方法来设置可观察对象的位置/索引(如果这是将其概念化的正确方法)。
抱歉,如果我遗漏了一些明显的东西,但这似乎是从数组创建的 observables 的一个相当常见的用例。
【问题讨论】:
-
鉴于 Observables 是在特定时间点发生的事件流,可能很难返回 ;-) 猜猜我们需要以比光速更快的速度旅行
-
您也许可以在某种列表中“保存”步骤。
-
基本上你无法知道流是否来自其他来源的数组。您始终可以使用
repeat运算符重新订阅源。如果天气很冷,就像您的情况一样,您将再次收到所有通知。如果天气很热,您需要使用shareReplay之类的东西来重播过去的事件。
标签: rxjs rxjs6 rxjs-pipeable-operators rxjs-observables