如何在 RxJava2 中使用 void Subject?
How to use void Subject in RxJava2?
我是这样创建的:
private final PublishSubject<Void> subject = PublishSubject.create();
但是如何在onNext(T t)
中给它传值呢?我不能将 null 传递给它,因为它会抛出异常。 onComplete
也不是一个选项。
2.x 通常不允许空值,因此 Void
类型不会让您发出任何 onNext(null)
,这与 1.x 不同。如果您认为您需要 Void
作为您的元素类型,则表明您不在乎哪些元素只是您想要对某事反复做出反应。
对于这种情况,您可以改用任何其他类型并用信号表示任何值。在 wiki 中有一个你可以改编的例子:
enum Irrelevant { INSTANCE; }
PublishSubject<Irrelevant > source = PublishSubject.create();
source.subscribe(e -> { /* Ignored. */ }, Throwable::printStackTrace);
source.onNext(Irrelevant.INSTANCE);
source.onNext(Irrelevant.INSTANCE);
在 Kotlin 中你可以使用 Unit:
val source = PublishSubject.create<Unit>()
source.onNext(Unit)
我是这样创建的:
private final PublishSubject<Void> subject = PublishSubject.create();
但是如何在onNext(T t)
中给它传值呢?我不能将 null 传递给它,因为它会抛出异常。 onComplete
也不是一个选项。
2.x 通常不允许空值,因此 Void
类型不会让您发出任何 onNext(null)
,这与 1.x 不同。如果您认为您需要 Void
作为您的元素类型,则表明您不在乎哪些元素只是您想要对某事反复做出反应。
对于这种情况,您可以改用任何其他类型并用信号表示任何值。在 wiki 中有一个你可以改编的例子:
enum Irrelevant { INSTANCE; }
PublishSubject<Irrelevant > source = PublishSubject.create();
source.subscribe(e -> { /* Ignored. */ }, Throwable::printStackTrace);
source.onNext(Irrelevant.INSTANCE);
source.onNext(Irrelevant.INSTANCE);
在 Kotlin 中你可以使用 Unit:
val source = PublishSubject.create<Unit>()
source.onNext(Unit)