iSi*_*Dev 2 ios swift rx-swift
我是RXSwift的新手,我定义了一个Observable interval定时器序列,该序列每秒调用一次Webservice方法。在该Web服务响应中,我收到新的重试时间值,该值必须替换为当前时间。如何用新的时间值重置此序列?这是我的代码:
func mySequence() {
/////////////////////////////////////// subscribe to Timer (time change)
var time = try! self.timer.value()
self.disposeTimer = timer.subscribe({ value in
time = value.element!
print("=============================\(String(describing: time))=======================================")
})
/////////////////////////////////////// subscribe to Timer (time change)
let observable = Observable<Int>.interval(TIME I NEED TO CHANGE After response , scheduler: MainScheduler.instance).map { _ in ()
self.myWebserviceMethod()
}
disposable = observable.subscribe(onNext: {num in
}, onError: { err in
}, onCompleted: {
}, onDisposed: {
})
}
Run Code Online (Sandbox Code Playgroud)
一切都会发生,但是间隔计时器时间仍然是旧值:(
只需删除(处置)旧订阅并以新间隔创建新订阅
var timerDisposable:Disposable?
var retryTime:RxTimeInterval = 1
func stratRefresh() {
timerDisposable?.dispose()
timerDisposable = Observable<Int>
.timer(0, period: retryTime, scheduler: MainScheduler.instance)
.subscribe(onNext: { value in
myWebserviceMethod()
})
}
func myWebserviceMethod() {
// In service response update your retryTime
// Ex.
APIClient.getRetryTime() { newTime in
if retryTime != newTime {
retryTime = newTime
stratRefresh()
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |