一篇不太一样的RxJava介绍,Android MVP模式详解

所以在我们的角度,我们是被动的,也就是英语中的reactive ,也就是所谓的响应式

我们回到我们的例子:

同步的时候,我们是这样的

interface Model{
fun getList() : List

fun getBitmap(metaData : MetaData) : Bitmap
}

而异步的时候,我们的方法没有了返回值,多了个参数,所以不能使用漂亮的**“链式调用”。 这是因为List 本身,就是一种同步的类型。我们每次操作List,都是对List来拉取**数据。不信?我们来看下:

大家都知道List并不是最基础的集合,常用的集合还有HashMap,Set,Table,Vector等等等等。他们都有一个共同的父类: Iterable

interface Iterable {
fun iterator(): Iterator
}

这里的iterator就是迭代器,他是这个样子的

interface Iterator {

fun next(): T

fun hasNext(): Boolean
}

使用的时候也就是我们最麻烦的迭代方式:

val i = iterator()
while(i.hasNext()){
val value = i.next()
}

所以我们在Java中有了foreach,以及后面的stream api等等语法糖。 这里我们看到了,我们每次确实首先询问List,有没有值,如果有我们获取这个值,如果没有,跳出循环,对List的操作结束。读取完毕。

想象一下,如果我们有一种 AsyncList,对他的读取都是AsyncList来通知我们,然后再和同步的时候一样使用高阶函数比如map/foreach等等该多好。比如

interface Model{
fun getList() : AsyncL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值