我看到一篇关于Java9中新的与Flow
相关的接口的文章。以下是其中的示例代码:
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()
时,这些数字会相加吗?还是先前的请求被“丢弃”了?这导致了问题标题 - 订阅者是否需要跟踪接收到的项目,以避免在某些时候请求“太多”的项目。
n
的项目添加到当前未满足的此订阅的需求中]. - Sotirios Delimanolis