【发布时间】:2018-12-25 12:53:57
【问题描述】:
我有一个可以在短时间内发出多次的 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
})
和 fetchData:
func fetchData() -> Observable<[ReusableCellVMContainer]>
触发器:
let trigger = Observable.of(input.viewIsLoaded, handle(input.isNearBottomEdge)).merge()
【问题讨论】: