使用RxSwift定期更新

时间:2016-09-06 19:46:48

标签: ios swift rx-swift reactivex moya

我使用以下设置从API检索对象(例如GitHub问题)。这很好。

let provider: RxMoyaProvider<GitHub>
let issues: Driver<[IssueViewModel]>

init(provider: RxMoyaProvider<GitHub>) {
    self.provider = provider
    issues = provider.request(.Issue)
              .mapArray(Issue.self, keyPath: "issues")
              .asDriver(onErrorJustReturn: [])
              .map { (models: [Issue]) -> [IssueViewModel] in
                  let items = models.map {
                      IssueViewModel(name: $0.name,
                          description: $0.description
                      )
                  }
                  return items
              }
}

现在我想定期更新问题列表(例如,每20秒)。我想到NSTimer来完成这项任务,但我想可能有一个干净的(呃)解决方案(即以Rx的方式),我没有想到。

非常感谢任何正确方向的暗示。

2 个答案:

答案 0 :(得分:9)

这与this question/answer非常相似。

您应该使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="root">123</div>然后使用timer

flatMapLatest

答案 1 :(得分:2)

您可能正在寻找 var driver: Driver<String> { return Driver<Int>.interval(1.0).map { _ in return "test" } } driver.asObservable().subscribeNext { (variable) in print(variable) } 运营商。 以下是```{r} rasList <- list.files("NDVI_Modis/AOI_NDVI", full.names = TRUE, pattern = ".tif$") NDVI_Otjo_stack <- stack(rasList) ``` 的循环示例,它将继续打印&#34; test&#34;每一秒。 链接到文档:http://reactivex.io/documentation/operators/interval.html

Quitting from lines 42-44 (MODIS_TimeSeriesProcessor.Rmd) 
Error in x[[1]] : subscript out of bounds
Calls: <Anonymous> ... stack -> stack -> .local -> stack -> stack -> .local
Execution halted