RxJava:使用' first'时抛出IllegalArgumentException。操作者

时间:2015-10-06 10:57:27

标签: java android rx-java

当我使用Observable.first()运算符时,我得到一个带有消息&#34的IllegalArgumentException; Sequence包含太多元素"。

这是一个简化的测试代码可以重现异常:

Subject<Integer, Integer> subject = BehaviorSubject.create();

subject.first()
       .subscribe(integer -> subject.onNext(1));

subject.onNext(0);

这些代码是从一个非常复杂的真实项目中提取的,我不认为我可以很容易地解释为什么我需要做这个奇怪的事情。

所以我只是想问一个问题: 这是RxJava中的错误还是我自己的错误使用?

如果使用不正确,我认为我需要重写逻辑以避免这些代码。

非常感谢。

1 个答案:

答案 0 :(得分:3)

有一个带有运算符(由第一个使用)的known bug具有重入问题,下一个版本1.0.15将包含该修复。对此没有ETA,抱歉。

顺便说一句,如果没有这个bug,你为什么要在你的代码中做这个呢?你想向其他订阅者发出信号吗?

修改

解决方法:

任何进行序列化的操作员都可以用来解决这个bug。也许最简单的方法是使用BehaviorSubject.create().toSerialized()