Dav*_*kro -1 java android rx-java retrofit
我有一个名为verifyData的服务。我需要多次调用此服务。
服务
@FormUrlEncoded
@POST("verifyData")
Observable<Adeudos> Adeudos(
@Field("id") int id_user
);
Run Code Online (Sandbox Code Playgroud)
简单调用
Observable<Adeudos> respuesta = services.verifyData(1);
respuesta.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Adeudos>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Adeudos adeudos) {
}
});
Run Code Online (Sandbox Code Playgroud)
我需要使用这个数组来执行这个“方法”
List<String> ids = new ArrayList(); // 1,2,3,4,5,6,7
Run Code Online (Sandbox Code Playgroud)
解决方案
添加retrolambda在我的gradle产出
爪哇
Observable.from(ids)
.flatMap(s -> services.verifyData(ids).subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Adeudos>() {
@Override
public void onCompleted() {
Log.e("Completed :"," Completed\n");
}
@Override
public void onError(Throwable e) {
Log.e("SplashInteractorImpl : ",e.getMessage()+"\n");
}
@Override
public void onNext(Adeudos adeudos) {
Log.e("SplashInteractorImpl : ",adeudos.getMessage()+"\n");
}
});
Run Code Online (Sandbox Code Playgroud)
如果要进行顺序调用,请使用 .concatMap
Observable.from(ids)
.concatMap(s -> services.verifyData(Integer.parseInt(s)))
//subscription
Run Code Online (Sandbox Code Playgroud)
如果您想要并行调用,请使用flatMap()带有maxConcurrent参数的a
Observable.from(ids)
.flatMap(s -> services.verifyData(Integer.parseInt(s))
.subscribeOn(Schedulers.io()), maxConcurrent)
//subscription
Run Code Online (Sandbox Code Playgroud)
因此,它会id从您的列表中创建流并对其进行修改以进行 api 调用。
| 归档时间: |
|
| 查看次数: |
1296 次 |
| 最近记录: |