在 RxSwift 中下载一次的正确方法是什么?

What is correct way to download once in RxSwift?

我有这个代码,但我不确定。

    NewsAPI.fetchNews(page: loadedPage.value + 1)
        .observeOn(MainScheduler.asyncInstance)
        .bind(onNext: { [weak self](news) in
            guard let strongSelf = self else { return }
            strongSelf.news.value = strongSelf.news.value + news
            strongSelf.loadedPage.value = strongSelf.loadedPage.value + 1
        })
        .disposed(by: disposeBag)

您的示例应该可以正常工作,但这里有一些说明:

  1. 您应该使用 subscribedrive 方法(对于 Observable/Driver 类型)处理 NewsAPI.fetchNews(page: loadedPage.value + 1) 的结果;
  2. strongSelf.loadedPage.value = strongSelf.loadedPage.value + 1(和其他)应替换为 strongSelf.loadedPage.value += 1

结果:

NewsAPI.fetchNews(page: loadedPage.value + 1)
    .observeOn(MainScheduler.asyncInstance)
    .subscribe(onNext: { [weak self] news in
        guard let strongSelf = self else { return }
        strongSelf.news.value += news
        strongSelf.loadedPage.value += 1
    })
    .disposed(by: disposeBag)