天真地,我会这样做(但是,它不起作用,请参见下文):
return Observable.from(files).concatMap(file -> retrofitApi.upload(uploadModel));
现在的问题是,没有办法告诉改造只使用一个线程进行这些调用。
reduce但是,会将一个函数调用的结果与原始可观察到的下一个发射值一起传递给下一个。那可以工作,但是传递给函数
reduce必须是同步的。不好。
另一种方法是递归地修改可观察对象:
void getNextFile(int i) { return retrofit.upload(i). onNext(result -> getNextFile(i + 1));}大致。但是我不确定如何清理它以使其更具可读性。
我认为最干净的是:
Observable.from(files).map(file -> retrofitApi.uploadSynchronously(new UploadModel(file)));



