gpt4 book ai didi

ios - 如何在 RXSwift 中重置 Observable 间隔运算符?

转载 作者:可可西里 更新时间:2023-11-01 00:19:45 24 4
gpt4 key购买 nike

我是 RXSwift 的新手,我定义了一个 Observable 间隔计时器序列,它每秒调用一个 webservice 方法。在该网络服务响应中,我收到必须替换为我当前时间的新重试时间值。如何用新的时间值重置这个序列?这是我的代码:

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()
}
}
}

关于ios - 如何在 RXSwift 中重置 Observable 间隔运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52324977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com