在 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)
您的示例应该可以正常工作,但这里有一些说明:
- 您应该使用
subscribe
或 drive
方法(对于 Observable
/Driver
类型)处理 NewsAPI.fetchNews(page: loadedPage.value + 1)
的结果;
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)
我有这个代码,但我不确定。
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)
您的示例应该可以正常工作,但这里有一些说明:
- 您应该使用
subscribe
或drive
方法(对于Observable
/Driver
类型)处理NewsAPI.fetchNews(page: loadedPage.value + 1)
的结果; 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)