【发布时间】:2017-11-01 15:23:51
【问题描述】:
我正在尝试使用 RxSwift 对多个数据源执行操作。但是,我不知道如何完成以下操作。
我有一个 observabless 数组,其中每个的输出应该是下一个的输入。所以,我想做一些类似的事情,获取第一个 observable,等待结果并将其传递给下一个,一直到数组的末尾并返回一个最终值。
这可能吗?提前致谢。
*** 更新:好的,我会根据要求更具体。
我在数组中使用的“observables”是自定义的。我使用返回Observable.create { ... } 的函数。在闭包内部,我运行一个异步操作来转换值,然后在完成之前将结果发送给观察者。该结果值必须传递给下一个可观察对象,以此类推到数组中的最后一个可观察对象以获得最终值。
observable 可以发送多个值,但它们必须像装配线一样从一个 observable 传递到下一个。
【问题讨论】:
-
你能说得更具体点吗? “等待结果并将其传递给下一个”是什么意思?根据定义,可观察对象产生 0..n 个“结果”,那么是每个结果还是一个特定结果?也就是说,什么是“最终价值”?
-
如果您有代码可以在您的问题中发布,那就太好了。现在你的描述没有意义——如果你有一个可观察的数组,你不能将一个的输出传递给下一个的“输入”——可观察的没有“输入”。观察者有,但他们没有输出。受试者两者都有,但这不是你所描述的。
-
“结果值,必须传递给下一个 observable” - 好的,这称为“连续传递样式 (CPS)”,通常描述函数式编程中的控制流,特别是 Rx 中的控制流。将一个 observable 发出的 values 转换为其他 observables 是通过 .flatMap() 运算符实现的。不过还有很多其他运算符,最好提前学习它们以了解您的选择 - 请参阅rxmarbles.com的概述@
标签: swift reactive-programming rx-swift