为什么地图被多次调用?

时间:2019-04-15 22:57:29

标签: java android multithreading rx-java rx-java2

我有以下代码:

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之前获取了输入。 为什么?

1 个答案:

答案 0 :(得分:1)

如果您查看ReactiveX map运算符here的官方文档和随附的Marble图,您会发现对每个输入都执行了map函数

enter image description here

因此,如果您想一次执行所有元素都可用的功能,就不能依赖它。

使用map运算符,您可以对要单独执行的每个元素应用转换。