gpt4 book ai didi

java - 如何使用 RX Java 正确处理 EventBus 上的 onError

转载 作者:太空宇宙 更新时间:2023-11-03 13:53:17 26 4
gpt4 key购买 nike

我在 android 上使用 rx java,我的事件总线类如下所示

public class EventBus {
private final Subject<Event, Event> subject = new SerializedSubject<>(PublishSubject.<Event>create());
private Observable<Map<Type, Event>> stickyObservable;

public EventBus() {
createStickyObservable();
}

private void createStickyObservable() {
final List<Observable<Event>> observables = new ArrayList<>();

final Observable<Map<Type, Event>> so = subject
.filter(event -> event.sticky)
.groupBy(event -> event.type)
.switchMap(groupedObservable -> {
BehaviorSubject<Event> bs = BehaviorSubject.create();
groupedObservable.subscribe(bs);
observables.add(bs);
return Observable.combineLatest(observables, args -> {
Map<Type, Event> map = new HashMap<>();
for (Object arg : args) {
Event event = (Event) arg;
map.put(event.type, event);
}

return map;
});
});

final BehaviorSubject<Map<Type, Event>> bs = BehaviorSubject.create();
so.subscribe(bs);
stickyObservable = bs;
}

public Observable<Event> filter(final String pathExpression) {
final Pattern pattern = Pattern.compile(pathExpression);

return subject.filter(event -> {
if (event.path == null) {
return pathExpression == null;
}
return pattern.matcher(event.path).matches();
});
}

public Observable<Map<Type, Event>> getStickyObservable() {
return stickyObservable;
}


public void event(Event event) {
subject.onNext(event);
}

我收到很多关于 rx.exceptions.OnErrorNotImplementedException 的错误日志:

我该如何解决这个问题?请给我一些解决这个问题的建议

最佳答案

当您订阅 getStickyObservable() 时,您需要实现 onError 方法(不要只使用例如 .subscribe(action) 重载)。

关于java - 如何使用 RX Java 正确处理 EventBus 上的 onError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com