gpt4 book ai didi

android - Retrofit 和 Rx 重复请求

转载 作者:行者123 更新时间:2023-11-30 01:20:20 25 4
gpt4 key购买 nike

我有按页返回数据的 API,如下所示:

{
"count": 100,
"offset": 0,
"limit": 25,
"result": [{}, {}, {}...]
}

我需要获取所有页面 - 所有数据(以使用不同的“偏移量”执行查询:)。

      Observable<MyResponse> call = RetrofitProvider.get().create(MyApi.class).getData(0, 25); // limit and offset
call.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.doOnNext(<saving data>)
.subscribe(result -> {
}, error -> {
});

我正在尝试使用 RxAndroid 和 Retrofit。最好的方法是什么?

最佳答案

您可以使用发布主题作为源可观察对象,然后不断动态地为下一个范围添加新请求。

private Observable<ApiResponse> getData(int start, int end) {
// Get your API response value
return RetrofitProvider.get().create(MyApi.class).getData(0, 25);
}

public Observable<ApiResponse> getAllData() {
final PublishSubject<ApiResponse> subject = PublishSubject.create();
return subject.doOnSubscribe(new Action0() {
@Override
public void call() {
getData(0, SECTION_SIZE).subscribe(subject);
}
}).doOnNext(new Action1<ApiResponse>() {
@Override
public void call(ApiResponse apiResponse) {
if (apiResponse.isFinalResultSet()) {
subject.onCompleted();
} else {
int nextStartValue = apiResponse.getFinalValue() + 1;
getData(nextStartValue, nextStartValue + SECTION_SIZE).subscribe(subject);
}
}
});
}

关于android - Retrofit 和 Rx 重复请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com