public void uploadFile(String baseId, List<String> before, List<String> now, List<String> after) {
Consumer<Boolean> next = result -> {
if (view != null) {
view.onUploadFile(true, "");
}
};
Consumer<Throwable> throwable = e -> {
if (view != null) {
view.onUploadFile(false, e.getMessage());
}
};
Observable.zip(uploadFileResult("tb1", baseId, "1", before),
uploadFileResult("tb2", baseId, "2", now),
uploadFileResult("tb3", baseId, "3", after),
(s1, s2, s3) -> true)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(next, throwable);
}
private Observable<List<UploadFileResult>> uploadFileResult(String modelName, String baseId, String remarks, List<String> localImages) {
return Observable.fromIterable(localImages)
.flatMap(s -> {
MultipartBody body = RetrofitUtils.createMultipartBody(s, "file");
return Network.checkNetwork(context, Network.getApis().uploadFile(modelName, baseId, remarks, body));
})
.compose(Network.check())
.compose(Network.nullCheck())
.subscribeOn(Schedulers.io())
.toList().toObservable()
.flatMap(uploadFileResults -> Observable.just(uploadFileResults));
}
Rxjava操作符 -- Zip
最新推荐文章于 2023-05-16 15:30:14 发布