我正在尝试使用RxSwift对多个数据源执行操作。但是,我不知道如何完成以下任务。
我有一个observabless数组,其中每个的输出应该是下一个的输入。所以,我想做一些事情,得到第一个可观察的,等待结果并将其传递给下一个,一直到数组的末尾并返回一个最终值。
这可能吗?提前谢谢。
***更新:好的,我会根据要求提供更具体的信息。
我在数组中使用的'observable'是自定义的。我使用一个返回Observable.create { ... }
的函数。在闭包内部,我运行一个异步操作,转换值,然后在完成之前将结果发送给观察者。结果值必须传递给下一个observable,依此类推到数组中的最后一个observable以获得最终值。
observable可能会发送多个值,但它们必须像一条装配线一样从一个observable传递到另一个observable。
答案 0 :(得分:0)
很难确切地知道你要求的是什么,因为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()