Ios 如何重置RXSwift中的可观测间隔运算符?

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

我是RXSwift的新手,我定义了一个可观察的间隔计时器序列,它每秒调用一个webservice方法。 在该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: {

    })

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

只需删除(处置)旧订阅并使用新间隔创建新订阅。您可以编辑我的代码吗?我应该在哪里处置?计时器是可观察的,并且不是一次性的。您可以给我发送一个样本吗?任何可观察序列的每个订阅都是一次性的。