我在控制台中有这条消息,因为Api方法被多次调用。
curl -X GET
"https://newsapi.org/v2/top-headlines?apiKey=.............&pageSize=20&category=science&page=2" -i -v
Canceled (33ms)
2018-03-25 12:47:38.810618+0300 TestNewsApp[19773:2413537] Task <4B122FB1-1F0D-41FF-A102-BE2DE95BCBFC>.<42> finished with error - code: -999
2018-03-25 12:47:38.810779+0300 TestNewsApp[19773:2414036] Task <4B122FB1-1F0D-41FF-A102-BE2DE95BCBFC>.<42> HTTP load failed (error code: -999 [1:89])
curl -X GET
"https://newsapi.org/v2/top-headlines?apiKey=.............&pageSize=20&category=science&page=2" -i -v
Canceled (34ms)
2018-03-25 12:47:38.844640+0300 TestNewsApp[19773:2413537] Task <9D6193D7-B757-4CB3-B812-452FE0B382BF>.<43> finished with error - code: -999
2018-03-25 12:47:38.844870+0300 TestNewsApp[19773:2413546] Task <9D6193D7-B757-4CB3-B812-452FE0B382BF>.<43> HTTP load failed (error code: -999 [1:89])
curl -X GET
"https://newsapi.org/v2/top-headlines?apiKey=.............&pageSize=20&category=science&page=2" -i -v
Canceled (49ms)
2018-03-25 12:47:38.893744+0300 TestNewsApp[19773:2413579] Task <8A61A548-7F58-43CE-A829-57C8A6F952E5>.<44> finished with error - code: -999
2018-03-25 12:47:38.893937+0300 TestNewsApp[19773:2413546] Task <8A61A548-7F58-43CE-A829-57C8A6F952E5>.<44> HTTP load failed (error code: -999 [1:89])
curl -X GET
"https://newsapi.org/v2/top-headlines?apiKey=.............&pageSize=20&category=science&page=2" -i -v
Success (1220ms): Status 200
问题在于此代码。
scrollViewDidReachBottom
.asObservable()
.withLatestFrom(loadedPage.asObservable())
.observeOn(MainScheduler.asyncInstance)
.flatMapLatest { page in
return NewsAPI.fetchNews(page: page + 1)
}.subscribe( onNext: { [weak self]result in
guard let strongSelf = self else { return }
strongSelf.loadedPage.value = strongSelf.loadedPage.value + 1
strongSelf.news.value = strongSelf.news.value + result
})
.disposed(by: disposeBag)
fetchNews(页面:Int) - &gt;可观察到的百分比抑制率数据新闻] GT;是静态功能
我使用此代码修复它,但我不确定这是正确的方法。
scrollViewDidReachBottom
.asObservable()
.observeOn(MainScheduler.asyncInstance)
.subscribe(onNext: { [weak self] _ in
guard let strongSelf = self else { return }
if !strongSelf.inCall {
strongSelf.inCall = true
NewsAPI.fetchNews(page: strongSelf.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
strongSelf.inCall = false
})
.disposed(by: strongSelf.disposeBag)
}
})
.disposed(by: disposeBag)
答案 0 :(得分:1)
我用这段代码修复了它。
scrollViewDidReachBottom
.asObservable()
.withLatestFrom(loadedPage.asObservable())
.observeOn(MainScheduler.asyncInstance)
.flatMapFirst { page in
return NewsAPI.fetchNews(page: page + 1)
}
.subscribe( onNext: { [weak self]result in
guard let strongSelf = self else { return }
strongSelf.loadedPage.value += 1
strongSelf.news.value = strongSelf.news.value + result
})
.disposed(by: disposeBag)
flatMapFirst解决了我的问题。
答案 1 :(得分:0)