我正在尝试使用RxSwift对多个数据源执行操作。但是,我不知道如何完成以下任务。
我有一个observables数组,其中每个的输出应该是下一个的输入。因此,我想做类似的事情,获取第一个可观察到的结果,等待结果并将其传递给下一个,一直到数组的末尾并返回一个最终值。
那可能吗?提前致谢。
***更新:好的,我将根据要求更具体。
我在数组中使用的“可观察对象”是自定义的。我使用一个返回Observable.create { ... }
的函数。在闭包内部,我运行一个异步操作,该操作将转换值,然后在完成之前将结果发送给观察者。该结果值必须传递给下一个可观察值,依此类推,传递给数组中的最后一个可观察值,以获取最终值。
可观察对象可以发送多个值,但是它们必须像装配线一样从一个可观察对象传递到下一个。
最佳答案
很难确切地知道您的要求,因为Observable
并没有确切的输入,但是我认为这是一个普遍的问题。
您可能正在寻找concat
或reduce
运算符的组合,这些运算符使您可以从Observable
发出的值中累积数据。请参见ReactiveX's documentation for Mathematical and Aggregate Operators。
希望这可以帮助您入门:
// "I have an array of observables..."
let one = Observable.deferred { Observable.just(1) }
let two = Observable.deferred { Observable.just(2) }
let observables = [one, two]
// "the output of each, should be the input of the next"
// this is problematic, because observables do not strictly have inputs.
let resultsFromEach = Observable.concat(observables)
resultsFromEach
.reduce(0) { result, next in
result + 1
}
.debug("result")
.subscribe()
关于swift - 可观察变量数组,其中每个的输出是下一个的输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47058231/