如何将多个Observable <t>组合成Observable <list <t>&gt;在Rxjava2中

时间:2017-11-03 02:37:07

标签: java android rx-java2

我有一个方法,

Observable<String> uploadFile(File file);

然后我实现方法

Single<List<String>> uploadFile(List<file> files){
     return Observable.fromIterable(files).flatMap(file -> upLoadFile(context, file))
            .toList();
 }

输入file1,file2,file3输出为List {file2,file1,file3}

如何以正确的顺序保存文件?

2 个答案:

答案 0 :(得分:0)

如果要对平面地图的输出进行排序,请使用sorted()方法。

Observable.fromIterable(files)flatMap(file -> upLoadFile(context, file))
        .sorted().toList();

答案 1 :(得分:0)

要保留observable的顺序,请使用concatMap而不是flatMap

if (IsPost)
{
 photo1 = WebImage.GetImageFromRequest("image1");
 newFileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(photo1.FileName);
 imagePath = @"branding\" + newFileName;
 photo1.Save(@"~\" + imagePath);

 photo2 = WebImage.GetImageFromRequest("image2");
 newFileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(photo2.FileName);
 imagePath = @"branding\" + newFileName;
 photo2.Save(@"~\" + imagePath);

 photo3 = WebImage.GetImageFromRequest("image3");
 newFileName = Guid.NewGuid().ToString() + "_" + Path.GetFileName(photo3.FileName);
 imagePath = @"branding\" + newFileName;
 photo3.Save(@"~\" + imagePath);
}