我有一个简单的数字流。我想做一些数学运算,然后按顺序在数组中收集结果。我怎样才能做到这一点 ?
func test (number : Int) -> Observable<Int> {
let obs2 = Observable<Int>.create { (obs) -> Disposable in
obs.onNext(number + 10)
return Disposables.create()
}
return obs2
}
let obs = Observable.from([1,2,3,4]).flatMap { (item) -> Observable<Int> in
self.test(number: item)
}.map { (result) -> Int in
return result
}
//I want this:
obs.subscribe(onNext : {[Int] in
...
...
}
我不能将每个int合并到一个数组中。
let arrayObservable = obs.reduce([]) { acc, element in acc + [element] }
Reduce将以一个空数组开始,并将流的每个元素附加到该数组。然后.next
,在源obs
完成之后,它将仅发出一个事件,并累积结果。
另一种选择是使用buffer
运算符。但是请记住,结果数组最多只能包含一定数量的元素,并且timeSpan
即使源未发出任何项目,它也将发出every 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句