Ios 如何重置RXSwift中的可观测间隔运算符?
我是RXSwift的新手,我定义了一个可观察的间隔计时器序列,它每秒调用一个webservice方法。 在该webservice响应中,我收到新的重试时间值,该值必须替换为我的当前时间。 如何用新的时间值重置此序列? 这是我的代码:Ios 如何重置RXSwift中的可观测间隔运算符?,ios,swift,rx-swift,Ios,Swift,Rx Swift,我是RXSwift的新手,我定义了一个可观察的间隔计时器序列,它每秒调用一个webservice方法。 在该webservice响应中,我收到新的重试时间值,该值必须替换为我的当前时间。 如何用新的时间值重置此序列? 这是我的代码: func mySequence() { /////////////////////////////////////// subscribe to Timer (time change) var time = try! self.timer.valu
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: {
})
}
func mySequence(){
///////////////////////////////////////订阅计时器(时间更改)
var time=try!self.timer.value()
self.disposeTimer=timer.subscribe({中的值
时间=价值。元素!
打印(“====================================================\(字符串(描述:时间))=================================================”)
})
///////////////////////////////////////订阅计时器(时间更改)
let observable=observable.interval(响应后需要更改的时间,调度器:MainScheduler.instance)
self.myWebserviceMethod()
}
一次性=可观察。订阅(onNext:{num in
},onError:{err in
},未完成:{
},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()
}
}
}
var timerDisposable:一次性?
变量retryTime:RxTimeInterval=1
func stratRefresh(){
timerDisposable?.dispose()
timerDisposable=可观测
.timer(0,句点:retryTime,计划程序:MainScheduler.instance)
.subscribe(onNext:{中的值)
myWebserviceMethod()
})
}
func myWebserviceMethod(){
//在服务响应中更新您的retryTime
//前。
APIClient.getRetryTime(){newTime in
如果retryTime!=newTime{
retryTime=newTime
stratRefresh()
}
}
}
只需删除(处置)旧订阅并使用新间隔创建新订阅。您可以编辑我的代码吗?我应该在哪里处置?计时器是可观察的,并且不是一次性的。您可以给我发送一个样本吗?任何可观察序列的每个订阅都是一次性的。