Un abonnement peut être partagé par un éditeur et un abonné dans le but de servir de médiateur dans l'échange de données. C'est pourquoi la méthode subscribe() ne renvoie pas l'abonnement créé mais renvoie plutôt void. Les abonnements ne sont transmis aux abonnés que via le rappel de la méthode onSubscribe(). L'interface d'abonnement contient deux méthodes : request() et cancel().
Syntaxe
<strong>public interface Subscription {
public void request(long n);
public void cancel();
}</strong>
Copier après la connexion
Règles de l'interface d'abonnement :
-
Subscription.request() et Subscription.cancel() ne peuvent être appelées que dans leur contexte d'abonné.
- Les abonnements doivent permettre aux abonnés d'appeler la méthode Subscription.request() onNext() ou la méthode onSubscribe() de manière synchrone depuis l'intérieur. La méthode
-
Subscription.request() doit fixer une limite supérieure aux récursions synchrones possibles entre éditeurs et abonnés.
-
Subscription.request()Les méthodes doivent respecter la réactivité de leurs appelants en retournant
-
Subscription.cancel()Les méthodes doivent respecter la réactivité de leurs appelants en revenant dans les délais et doivent être thread-safe strong> .
- Tant que l'abonnement n'est pas annulé, la méthode Subscription.request(long n) doit enregistrer un nombre donné d'éléments supplémentaires à générer pour l'abonné correspondant.
- Bien que l'abonnement ne soit pas annulé, la méthode Subscription.request(long n) doit appeler la méthode onError() et lancer IllegalArgumentException si le paramètre est
- Lorsque l'abonnement n'est pas annulé, la méthode Subscription.request(long n) peut appeler la méthode onNext() de manière synchrone sur cet abonné ou sur d'autres abonnés.
- Lorsque l'abonnement n'est pas annulé, la méthode Subscription.request(long n) peut appeler la méthode onComplete() ou onError() de manière synchrone.
- Tant que l'abonnement n'est pas annulé, la méthode Subscription.cancel() doit demander à l'éditeur d'arrêter de signaler à ses abonnés. Cette opération n'affecte pas immédiatement l'abonnement.
- Tant que l'abonnement n'est pas annulé, la méthode Subscription.cancel() doit demander à l'éditeur de supprimer toute référence à l'abonnement correspondant.
- L'appel des méthodes Subscription.cancel() et Subscription.request() doit retourner normalement.
-
> Les abonnements doivent prendre en charge un nombre illimité d'appels de demande et prendre en charge un maximum de 2^63-1 exigences. Si la demande est égale ou supérieure à 2^63-1, l'éditeur peut considérer valideillimité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!