RxSwift-如何调用定期返回Driver的方法



我是RxSwift的初学者,正在使用RxSwift+MVVM制作应用程序。

我有一个方法,它调用API并转换为RxCocoa。ViewModel类中的驱动程序如下。

func fetch() -> Driver<HomeViewEntity> {
apiUseCase.fetch(query: HomeViewQuery())
.map { data in
HomeViewEntity(userName: data.name,
emailAddress: data.email
}
.asDriver(onErrorRecover: { [weak self] error in
if let printableError = error as? PrintableError {
self?.errorMessageRelay.accept(AlertPayload(title: printableError.title, message: printableError.message))
}
return Driver.never()
})
}

现在,我想定期调用这个fetchListPlace()方法,也就是在ViewController上进行轮询(例如,每5分钟一次(。

怎么做????

我认为interval适合这种情况,但我无法获得实现映像。。。。

开始:

func example(_ fetcher: Fetcher) -> Driver<HomeViewEntity> {
Driver<Int>.interval(.seconds(5 * 60))
.flatMap { _ in fetcher.fetch() }
}

另请注意,

  • 从恢复关闭中返回Driver.never()可能是个坏主意。首选Driver.empty()
  • 我不喜欢把副作用放在恢复关闭的第一位。我认为最好让fetch()返回Driver<Result<HomeViewEntity, Error>>,并将副作用移动到链的末端(在订阅或平面图中(

相关内容

最新更新