RxJava - 传递变量

RxJava - Pass variable

我有以下代码可以正常编译:

public Publisher<Foo> test() {
  return someObservable
         .map(a -> someMethod(a, null))
         .toFlowable(BackpressureStrategy.BUFFER);
}

我现在想调用一个方法并传入它的结果来使用而不是空值。我的猜测是像这样包装原始代码:

public Publisher<Foo> test() {
  return getSomeCollection()
         .map(myCollection -> 
           someObservable
           .map(a -> someMethod(a, myCollection))
         )
        .toFlowable(BackpressureStrategy.BUFFER);
}

但是这给了我一个类型不匹配错误'Cannot convert from Single<Object> to Publisher<Foo>'

如果我将外部地图更改为平面地图,我会得到 'Cannot convert from Flowable<Foo> to SingleSource<? extends Object>'

我需要修改什么才能编译?

使用flatMapPublisher代替map

return getSomeCollection()
            .flatMapPublisher(myCollection ->
                    someObservable
                            .map(a -> someMethod(a, myCollection))
                            .toFlowable(BackpressureStrategy.BUFFER)
            );