RxSwift-如何调用定期返回驱动程序的方法?

RxSwift-如何调用定期返回驱动程序的方法?,swift,rx-swift,rx-cocoa,Swift,Rx Swift,Rx Cocoa,我是一名RxSwift初学者,正在使用RxSwift+MVVM制作一个应用程序 我有一个方法,它调用API并在ViewModel类中转换为RxCocoa.Driver,如下所示 func fetch()->驱动程序{ 获取(查询:HomeViewQuery()) .map{中的数据 HomeViewEntity(用户名:data.name, 电子邮件地址:data.email } .asDriver(onErrorRecover:{[weake self]中出现错误 如果让printableEr

我是一名RxSwift初学者,正在使用RxSwift+MVVM制作一个应用程序

我有一个方法,它调用API并在ViewModel类中转换为RxCocoa.Driver,如下所示

func fetch()->驱动程序{
获取(查询:HomeViewQuery())
.map{中的数据
HomeViewEntity(用户名:data.name,
电子邮件地址:data.email
}
.asDriver(onErrorRecover:{[weake self]中出现错误
如果让printableError=错误为?printableError{
self?.errorMessageRelay.accept(AlertPayload(标题:printableError.title,消息:printableError.message))
}
返回驱动程序。从不()
})
}
现在,我想在ViewController上定期调用这个
fetchListPlace()
方法,即轮询(例如每5分钟一次)

怎么做

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

给你:

func example(_ fetcher: Fetcher) -> Driver<HomeViewEntity> {
    Driver<Int>.interval(.seconds(5 * 60))
        .flatMap { _ in fetcher.fetch() }
}
func示例(fetcher:fetcher)->驱动程序{
驱动程序间隔(.s(5*60))
.flatMap{在fetcher.fetch()中}
}
还注意到

  • 从恢复闭包返回
    驱动程序.never()
    可能是个坏主意。请选择
    驱动程序.empty()
  • 首先,我不喜欢在恢复闭包中添加副作用。我认为最好让
    fetch()
    返回
    驱动程序,并将副作用移动到链的末端(在订阅或平面图中)
    • 给你:

      func example(_ fetcher: Fetcher) -> Driver<HomeViewEntity> {
          Driver<Int>.interval(.seconds(5 * 60))
              .flatMap { _ in fetcher.fetch() }
      }
      
      func示例(fetcher:fetcher)->驱动程序{
      驱动程序间隔(.s(5*60))
      .flatMap{在fetcher.fetch()中}
      }
      
      还注意到

      • 从恢复闭包返回
        驱动程序.never()
        可能是个坏主意。请选择
        驱动程序.empty()
      • 首先,我不喜欢在恢复闭包中添加副作用。我认为最好让
        fetch()
        返回
        驱动程序,并将副作用移动到链的末端(在订阅或平面图中)