在 mergeDelayError() 之后它是如何工作的 Observable.take()?

How does it works Observable.take() after a mergeDelayError()?

我有一些这样的代码:

    Set<Something> set = HashSet<>();
    // [...]
    return Observable.mergeDelayError(
            Observable.from(set)
                    .map(something -> process(something)))
            .take(1);

根据文档:

mergeDelayError: Flattens an Observable that emits Observables into one Observable, in a way that allows an Observer to receive all successfully emitted items from all of the source Observables without being interrupted by an error notification from one of them.

至此,我明白了。 我的问题是关于方法 take():它会等待所有 Observables return 在获取第一个结果之前,还是从第一个完成的 Observable 中获取第一个结果?

TIA,

Will it wait for all Observables return something before take the first result

没错

UPD

根据该测试 returns 第一个发出的项目

    Observable.mergeDelayError(
            Observable.just(null)
                    .doOnNext(x -> {
                        throw new RuntimeException();
                    }),
            Observable.just(1).delay(70, TimeUnit.MILLISECONDS),
            Observable.just(2).delay(50, TimeUnit.MILLISECONDS))
            .take(1)
            .subscribe(System.out::print);