当我使用Observable.first()运算符时,我得到一个带有消息&#34的IllegalArgumentException; Sequence包含太多元素"。
这是一个简化的测试代码可以重现异常:
Subject<Integer, Integer> subject = BehaviorSubject.create();
subject.first()
.subscribe(integer -> subject.onNext(1));
subject.onNext(0);
这些代码是从一个非常复杂的真实项目中提取的,我不认为我可以很容易地解释为什么我需要做这个奇怪的事情。
所以我只是想问一个问题: 这是RxJava中的错误还是我自己的错误使用?
如果使用不正确,我认为我需要重写逻辑以避免这些代码。
非常感谢。
答案 0 :(得分:3)
有一个带有运算符(由第一个使用)的known bug具有重入问题,下一个版本1.0.15将包含该修复。对此没有ETA,抱歉。
顺便说一句,如果没有这个bug,你为什么要在你的代码中做这个呢?你想向其他订阅者发出信号吗?
修改
解决方法:
任何进行序列化的操作员都可以用来解决这个bug。也许最简单的方法是使用BehaviorSubject.create().toSerialized()
。