- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 Subject
,一个订阅另一个来获取更新。
Subject<Integer> subject = new Subject<>() {
@Override
public boolean hasObservers() {
return false;
}
@Override
public boolean hasThrowable() {
return false;
}
@Override
public boolean hasComplete() {
return false;
}
@Override
public Throwable getThrowable() {
return null;
}
@Override
protected void subscribeActual(Observer<? super InitialAPIResponse> observer) {
}
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer result) {
Log.d(TAG, "onNext: " + apiResponse);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
subject.doOnNext(result -> Log.d("Subject", "accept: " + result));
observableSubject
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe(subject);
observableSubject.onNext(1);
observableSubject.onComplete();
当调用onNext()
时,Consumer
的accept()
在doOnNext()
中提供> 不是。即使根据文档
Observable.doOnNext()
Modifies the source
ObservableSource
so that it invokes an action when it callsonNext
.Scheduler:
doOnNext
does not operate by default on a particularScheduler
onNext
the action to invoke when the source ObservableSource callsonNext
return the source ObservableSource with the side-effecting behavior applied
据我从文档中了解到,可观察对象应该调用 doOnNext()
中的 Consumer
。
我正在学习RxJava
所以也许我在这里做错了什么......
最佳答案
有两个问题:
1.
subject.doOnNext(result -> Log.d("Subject", "accept: " + result));
在上面的代码中,doOnNext
的结果没有被订阅。与许多其他运算符一样,doOnNext
本身并不订阅上游。改成这样,例如:
subject.doOnNext(result -> Log.d("Subject", "accept: " + result)).subscribe();
2.
observableSubject
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe(subject);
observableSubject.onNext(1);
observableSubject.onComplete();
在上面的代码中,onComplete
在 .onNext
之后立即调用。这可能会在发出值时导致计时问题。
将上面的代码更改为
observableSubject
.subscribe(subject); // subscribe on the same thread so that everything happens sequentially.
observableSubject.onNext(1);
observableSubject.onComplete();
或
Subject<Integer> observableSubject = BehaviorSubject.create();
observableSubject
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io())
.subscribe(subject);
observableSubject.onNext(1);
// observableSubject.onComplete(); // don't call onComplete/
关于java - doOnNext() 中的主题未调用 Consumer.accept(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58059430/
下面我的订阅者既没有调用 onNext() 也没有调用 onCompleted()。我已经尝试通过 doOnNext()/doOnTerminate() 实现订阅者。我也试过 doAfterTermi
我是响应式(Reactive)编程的新手,也是 Spring Webflux 的新手我有一个方法可以从 Redis 获取一些键,如果这个键为 null 或不等于指定的字符串,我想抛出一个异常,但是嵌套
我有两个 Subject,一个订阅另一个来获取更新。 Subject subject = new Subject<>() { @Override public boolean hasO
我刚开始使用 rx kotlin,还没有完全理解。我正在尝试遍历查询列表,并一个一个地执行它们。在这个列表中,我有一个特殊的字符串,一旦到达,我想打破循环并执行另一个功能 我怎样才能在下面的例子中做到
在哪些情况下我应该使用 doOnNext,以及在哪些情况下doOnEach? .doOnEach(new Action1>() { @Override
我们什么时候应该使用 doOnNext()来自 Observable 而不是 onNext()? 最佳答案 doOnNext 用于副作用:您希望在流的中间步骤中对项目排放使用react(例如记录),例
我正在开发一个项目,我想在返回结果之前迭代一个列表并将它们组合起来。基本上我正在尝试将 PostResponse 对象转换为 Post。 一些相关代码。 Post.java public class
我正在寻找一种方法来确保某些函数有条件地为流运行。基本上对于每个 updateMessage,我希望始终运行 processType1,并且仅根据 updateMessage 中是否存在字段来运行 p
我有这个困惑,什么时候 doOnNext 是在 Publisher (Flux/Mono) 元素发射之前或之后触发的。 最佳答案 它在元素发布之后 - 并且它必须在定义之后,否则 Consumer传递
我的应用程序中有许多用于网络请求的 Observable。由于有太多相同之处,我对它们应用了 Observable 转换: /** * Creates a transformer that appl
假设您有 Mono someIntegerSource = Mono.just(5)并且您想将其分配给一个变量。 这些代码片段之间有区别吗? 案例1: doOnSuccess someIntegerS
我在我的项目中使用 spring-boot-starter-webflux、reactor-test 和 spring-boot-starter-test 2.0.0.M7。在我的 Repositor
我尝试从服务器获取一些数据。 Observable> backendObservable = mCountriesApi.getCountries() .subscribeOn
有没有像 doOnNext 这样的方法,但是是异步的? 例如,我需要为确定的元素做一些长时间的日志记录(通过电子邮件发送通知)。 Scheduler myParallel = Schedulers.n
我正在将应用程序从 RxJava 1 迁移到 2。我有这样的代码: RxJava 1 public Completable update() { return client.fetchNote
在 Flux 中, map 函数也为通量中的每个项目执行。对于通量中的每个项目(发射的),doOnNext 函数也被执行。从用户角度看有什么区别?为什么存在两种类似的方法?可以用简单的易用性来解释。
我对 react 堆完全陌生。我的 flatMap、doOnNext、doFinally 没有被内部 Mono 调用。我添加了描述问题的示例测试和输出。即使我将 getMeIntegerMono2 与
我是一名优秀的程序员,十分优秀!