Я пришел к статье относительно новых Flow
связанных интерфейсов в Java9. Пример кода оттуда:
public class MySubscriber<T> implements Subscriber<T> {
private Subscription subscription;
@Override
public void onSubscribe(Subscription subscription) {
this.subscription = subscription;
subscription.request(1); //a value of Long.MAX_VALUE may be considered as effectively unbounded
}
@Override
public void onNext(T item) {
System.out.println("Got : " + item);
subscription.request(1); //a value of Long.MAX_VALUE may be considered as effectively unbounded
}
Как вы можете видеть, onNext()
запрашивает новый элемент один.
Теперь мне интересно:
- если
onSubscribe()
запрошено, скажем, 5 элементов - и после того, как первый элемент будет доставлен,
request(1)
вызывается, как указано выше
Ожидается ли, что сервер отправит
- пять элементов (запрошено 5 запросов -1 отправлено +1 запрошено)
- или один элемент (поскольку предыдущий запрос "отбрасывается" этим новым запросом)
Другими словами: когда request()
вызывается несколько раз, добавьте эти числа; или предыдущие запросы "отброшены"?
Подведение к заголовку вопроса - должен ли абонент отслеживать полученные элементы, чтобы избежать запроса "слишком много" элементов в какой-то момент.