Java 9中Subscriber接口的规则是什么?
订户 接口预订发布商通过到接收项目onNext()方法,通过该错误消息的onError()方法,或者通过可以预期没有更多个项目的信号的onComplete()方法。在发生任何这些事情之前,发布者将调用onSubscription()方法。
public interface Subscriber<T> { public void onSubscribe(Subscription s); public void onNext(T t); public void onError(Throwable t); public void onComplete(); }
订户接口规则:
甲订户 必须通过调用Subscription.request(长n)的 方法来接收onNext()信号。
Subscriber.onComplete()和Subscriber.onError(Throwablet)方法不得在Subscription或Publisher上调用任何方法。
Subscriber.onComplete()和Subscriber.onError(Throwablet)方法必须考虑在收到信号后取消订阅。
如果订阅服务器已经具有活动的Subscription,则必须在onSubscribe()信号之后在给定的Subscription上调用Subscription.cancel()方法。
如果不再需要订阅,则订阅者必须调用Subscription.cancel()方法。
订阅服务器确保按其订阅的请求和取消方法进行的所有调用均按顺序执行。
如果仍有请求的元素待处理,则订阅者必须在调用Subscription.cancel()方法之后接收一个或多个onNext()信号。此方法不能保证立即执行基础清洁操作。
订阅服务器必须接收onComplete()信号,无论是否调用前面的Subscription.request(longn)。
订阅服务器必须接收onError()信号,无论是否调用前面的Subscription.request(longn)。
订阅者确保对其信号方法的所有调用都在处理各个信号之前发生。这意味着用户必须注意将信号正确发布到其处理逻辑。
Subscriber.onSubscribe() 必须为给定的Subscriber最多调用一次。
调用onSubscribe(),onNext(),onError()或onComplete()方法必须返回,除非提供的任何参数为null,在这种情况下,必须将NullPointerException抛出给调用者。