RxJava:将单个值映射到一组 运行 并发的 Completable

RxJava: map Single value to a set of Completable that run concurrently

预期:给定一个单一的和多个可完成的,return一个可完成的。

Result: Cannot resolve method 'merge(io.reactivex.rxjava3.core.Completable, io.reactivex.rxjava3.core.Completable, io.reactivex.rxjava3.core.Completable)'

我目前正在尝试设置用于注册用户的流程。但是,我似乎找不到任何关于将 Single 的结果映射到一组可完成的文档。 这里的想法是在某个数据库中创建一个用户,检索响应数据并调用不同的 API。每当我尝试使用可完成的合并方法执行此操作时,它都会抛出上述错误。

例如,我们有一个 Single,它为用户 (createUser) 和 returns 用户或错误设置基本信息,我们有多个 Completable(s) (updateProfile, sendEmail, updateUser ) 对 API 和 return 完成状态或错误执行某些操作。谁能解释为什么会这样?

我的尝试:

auth.createUser(field1, field2)
    .flatMapCompletable(response ->
      Completable.merge(
            // Error occur here
             auth.updateProfile(response, updates),
             auth.sendEmail(response),
             db.updateUser(response, user)
      )
    )
.subscribeOn(Schedulers.io());

我现在没有 IDE,但快速查看 the RxJava3 code for Completable 显示

@CheckReturnValue
@NonNull
@SchedulerSupport(SchedulerSupport.NONE)
public static Completable merge(@NonNull Iterable<@NonNull ? extends CompletableSource> sources) {
    ...  
}

所以你需要传递一个 Completable 的列表。像

Completable.merge(
    Arrays.asList(
        auth.updateProfile(response, updates),
        auth.sendEmail(response),
        db.updateUser(response, user)
    )
)