Java 9 中 Subscriber 介面的規則是什麼?


**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();
}

Subscriber 介面規則

  • **Subscriber** 必須透過 **Subscription.request(long n)** 方法來接收 **onNext()** 訊號。
  • **Subscriber.onComplete()** 和 **Subscriber.onError(Throwable t)** 方法不得呼叫 Subscription 或 Publisher 上的任何方法。
  • 在接收到訊號後,**Subscriber.onComplete()** 和 **Subscriber.onError(Throwable t)** 方法必須認為 Subscription 已取消。
  • 如果 Subscriber 已經有一個活動的 Subscription,則必須在 **onSubscribe()** 訊號後對給定的 Subscription 呼叫 **Subscription.cancel()** 方法。
  • 如果不再需要 Subscription,Subscriber 必須呼叫 **Subscription.cancel()** 方法。
  • Subscriber 確保對其 Subscription 的 request 和 cancel 方法的所有呼叫都是序列執行的。
  • 如果仍有請求的元素待處理,則 Subscriber 必須在呼叫 **Subscription.cancel()** 方法後接收一個或多個 **onNext()** 訊號。此方法不能保證立即執行底層清理操作。
  • Subscriber 必須接收 **onComplete()** 訊號,無論是否在之前呼叫過 **Subscription.request(long n)**。
  • Subscriber 必須接收 **onError()** 訊號,無論是否在之前呼叫過 **Subscription.request(long n)**。
  • Subscriber 必須確保所有對其訊號方法的呼叫都在相應訊號處理之前發生。這意味著 Subscriber 必須注意將其訊號正確釋出到其處理邏輯。
  • 對於給定的 Subscriber,**Subscriber.onSubscribe()** 必須最多呼叫一次。
  • 呼叫 **onSubscribe()**、**onNext()**、**onError()** 或 **onComplete()** 方法必須返回結果,除非任何提供的引數為 null,在這種情況下,它必須向呼叫者丟擲 **NullPointerException**。

更新於:2020年4月21日

324 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告