RxJava flatMap使用[通俗易懂]

RxJava flatMap使用[通俗易懂]RxJavaflatMap使用1、使用场景首先从一个接口中获取list,然后根据获取到list中的元素信息,再获取每个元素的详细信息2、以下是代码片段(仅笔记于此)StringalbumUrl=“http://m.kugou.com/zlist/list?listid=2&type=0&uid=89255811&sign=495dc043c2b3ac9f…

大家好,又见面了,我是你们的朋友全栈君。

RxJava flatMap使用

1、使用场景
首先从一个接口中获取list,然后根据获取到list中的元素信息,再获取每个元素的详细信息
2、以下是代码片段(仅笔记于此)
String albumUrl = “http://m.kugou.com/zlist/list
?listid=2&type=0&uid=89255811
&sign=495dc043c2b3ac9f38e5f09d6d0bbef2
&_t=598024727&pagesize=100&json=&from=pcCode&page=1&share_type=collect”;
String musicPath = “D:\Music”; //表示存储路径
File file = new File(musicPath);
if (!file.exists()) {

file.mkdirs();
}
RxHttp.getInstance().getSyncServer()
.musicList(albumUrl)
.flatMap((Function<JSONObject, ObservableSource>) jsonObject -> {

List list = JSONObject.parseArray(jsonObject.getString(“info”), MusicItem.class);
return Observable.fromIterable(list);
})
.flatMap((Function<MusicItem, ObservableSource>) musicItem -> {

musicFile = new File(file.getAbsolutePath(), musicItem.getName() + “.mp3”);
return RxHttp.getInstance()
.getSyncServer()
.downloadMusic(musicItem);
})
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.newThread())
.subscribe(responseBody -> {

try {

InputStream is = responseBody.byteStream();
FileOutputStream fos = null;
fos = new FileOutputStream(musicFile);
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) != -1) {

fos.write(buffer, 0, len);
}
fos.flush();
fos.close();
bis.close();
is.close();
} catch (IOException e) {

e.printStackTrace();
System.out.print(e.getMessage());
}
}, throwable -> {

System.out.print(throwable.getMessage());
});

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136481.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【JAVA定时器】四种常见定时器的原理和简单实现

    【JAVA定时器】四种常见定时器的原理和简单实现个人学习笔记分享,当前能力有限,请勿贬低,菜鸟互学,大佬绕道如有勘误,欢迎指出和讨论,本文后期也会进行修正和补充前言定时器顾名思义,即定时触发某个事件,分离开来,即包含三个因素:定时,触发,某个事件,本文也将以此为基础介绍五种常见的定时器本文只做基于SpringBoot的示例,其余版本的请自行查阅资料,大同小异1.介绍1.1.目的定时器的目的即为了在某个时间点,程序自身主动触发某个事件,而不需要外力去开启或者启动,以节省人力并统一管理1.2.示例场景管理系统,需要每日12点.

    2022年7月8日
    18
  • Drupal 空白或者drupal安装时出现空白解决方法

    Drupal 空白或者drupal安装时出现空白解决方法在安装drupal的时候,在自己机器里面调试经常出现drupal空白页,也没有错误提示。一直也没有找到空白的解决方法,今天终于找到解决出现空白出现的简单小技巧。网上也提供了修改php.ini里面的时间设置还有memory_limit设置等。数值都改大一点。刚才google到了一个方法是在setting.php文件里加入下面的代码,方便简单,大家可以试用一下效果如果。error_repor

    2022年7月20日
    13
  • 一文概括常用图像处理算法

    一文概括常用图像处理算法本文总结了11种常用的图像处理算法,包含了预处理算法以及检测算法,并介绍了一些常用的开发库。一、算法(预处理算法、检测算法)在采集完图像后,首先会对图像进行预处理操作。1、图像变换(空域与频域、几何变换、色度变换、尺度变换)2、图像增强3、纹理分析(取骨架、连通性)4、图像分割5、图像特征6、图像/模板匹配7、色彩分析8、图像数据编码压缩和传输9、表面缺陷目标识别算法10、图像分类(识别)11、图像复原二、现有的视觉检测软件/库三、HSV颜色识别-HSV基本颜色分量范围

    2022年5月13日
    50
  • 微信小程序显示富文本_微信小程序text标签

    微信小程序显示富文本_微信小程序text标签wxParse方法我踩雷了微信官方文档有个更为便捷的标签<rich-textnodes=”{{}}”></rich-text>

    2022年8月18日
    6
  • MySQL TENSE

    MySQL TENSE

    2021年5月5日
    137
  • origin并列柱状图怎么画_多簇并列堆积柱形图

    origin并列柱状图怎么画_多簇并列堆积柱形图1.打开Origin在工作簿中,输入数据,Y有两列2.选择相应数据并绘图3.修改图的设置修改纵坐标修改颜色修改图例4.保存为图片在word中双击图片,设置图片边框最终图片效果…

    2022年9月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号