1. 我们在Flux打开时,可以看到
public abstract class Flux<T> implements CorePublisher<T> {
2.
public interface CorePublisher<T> extends Publisher<T> { void subscribe(CoreSubscriber<? super T> subscriber); }
Publisher的关键时有个subscribe方法。这个方法就是在reactor的subscribe的时候会调用到这里。
3. 这里subscribe的参数有个CoreSubscriber。其实这个方法基本上最终其实会调用到CoreSubscriber的onSubscribe方法。
随便看对void subscribe(CoreSubscriber<? super T> subscriber);的方法的实现
选择Flux举例。看到最终调用结果:
4. 那么onSubscribe怎么调用下游呢?
注意,void onSubscribe(Subscription s);里面又传入了Subscription。
public interface Subscription { public void request(long n); public void cancel(); }
以Flux.just(1),为例,其实所有的onSubscribe方法会调用到Subscription的request方法。