我有以下代码:
disposable = Single.fromCallable(() ->fetchData())
.map(myObject::doUpdate)
.subscribeOn(mySingleThreadScheduler)
.observeOn(AndroidSchedulers.mainThread())
.doOnSuccess(consumer)
.subscribe(myFunction, failConsumer);
我看到的是:
fetchData()
和myObject::doUpdate
由我期望的同一线程(基于线程名称/线程ID)调用。
但是myObject::doUpdate
调用了超过1次,第二次好像是从运行fetchData
之前获取了输入。
为什么?
答案 0 :(得分:1)
如果您查看ReactiveX map
运算符here的官方文档和随附的Marble图,您会发现对每个输入都执行了map函数
因此,如果您想一次执行所有元素都可用的功能,就不能依赖它。
使用map
运算符,您可以对要单独执行的每个元素应用转换。