四酌毡、上傳反饋信息
場景描述:
首先上傳用戶圖片骂远,圖片上傳完成后把服務(wù)端返回的圖片地址和反饋內(nèi)容上傳到服務(wù)器园匹。
問題分析:
此問題可以分為三個(gè)數(shù)據(jù)流 1.上傳單張圖片 2.上傳所有圖片 3.上傳圖片地址和反饋內(nèi)容
偽代碼實(shí)現(xiàn):
//上傳單張圖片
public Observable<String> uploadImage(String path) {
return null;
}
//上傳所有圖片
public Observable<List<String>> uploadImages(List<String> paths) {
List<Observable<String>> observables = new ArrayList<>();
for (String path : paths) {
observables.add(uploadImage(path));
}
return Observable.concat(observables).toList().toObservable();
}
//組合圖片和內(nèi)容
public Observable<String> zipContent(Observable<List<String>> imageObservable, Observable<String> content) {
return Observable.zip(imageObservable, content, new BiFunction<List<String>, String, HashMap<String, String>>() {
@Override
public HashMap<String, String> apply(List<String> strings, String s) throws Exception {
HashMap<String, String> values = new HashMap<>();
values.put("images", TextUtils.join(",", strings));
values.put("content", s);
return values;
}
}).flatMap(new Function<HashMap<String, String>, ObservableSource<String>>() {
@Override
public ObservableSource<String> apply(HashMap<String, String> stringStringHashMap) throws Exception {
return feedback(stringStringHashMap);
}
});
}
//上傳最終數(shù)據(jù)到服務(wù)器
private ObservableSource<String> feedback(HashMap<String, String> values) {
return null;
}