[英]How to reset the Observable interval operator in RXSwift?
我是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: {
})
}
一切都會發生,但是間隔計時器時間仍然是舊值:(
只需刪除(處置)舊訂閱並以新間隔創建新訂閱
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()
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.