我有一个 observable(我们称之为触发器)可以在短时间内发出多次。当它发出时,我正在执行网络请求,并且我正在使用扫描操作员存储结果。
我的问题是我想等到请求完成后再做一次。(但现在如果触发器发出 2 个 observables,那么 fetchData 是否完成并不重要,它会再次执行)
奖励:我也想每 X 秒只取第一个(Debounce 不是解决方案,因为它可以一直发射,我想每 X 秒获得 1 个,它也不是节流,因为如果一个 observable 发出 2时间真的很快我会得到第一个和第二个延迟 X 秒)
编码:
trigger.flatMap { [unowned self] _ in
self.fetchData()
}.scan([], accumulator: { lastValue, newValue in
return lastValue + newValue
})
并获取数据:
func fetchData() -> Observable<[ReusableCellVMContainer]>
扳机:
let trigger = Observable.of(input.viewIsLoaded, handle(input.isNearBottomEdge)).merge()