andThen()内部的函数不发出onComplete()

时间:2019-05-03 21:58:47

标签: android rx-java rx-java2 rx-android

这是我的信息流:

public Completable changeUserPassword(String oldPass, String newPass){
        return firebaseAuthRepositoryType.getCurrentUser()
                .flatMapCompletable(fu -> firebaseAuthRepositoryType.reAuthenticateUser(fu,fu.getEmail(),oldPass)
                   .andThen(firebaseAuthRepositoryType.changeUserPassword(fu, newPass)))
                .observeOn(AndroidSchedulers.mainThread());
}

问题andThen()中的函数从不调用onComplete()?流被“卡在”那里。 changeUserPassword()的返回类型为Completable

出于调试目的,我试图将andThen()内部的功能更改为Completable.complete(),但是我看到了相同的行为。它仍然永远不会“完成”并陷入andThen()

我在这里错过了什么吗?有什么建议吗?

该流应该是:

  • getcurrentuser()返回用户->
  • 重新验证用户(用户):返回 Completable.onComplete()->
  • user.changepass()返回 Completable.complete()->
  • 返回可完成

1 个答案:

答案 0 :(得分:1)

Firebase因其永无止境的序列而臭名昭著,因此,如果firebaseAuthRepositoryType.getCurrentUser()ObservableFlowable,极有可能Single从未完成。将其更改为take(1)或使用PyObject *list = PyList_New(PREALLOC_SIZE(maxcount)); 来获得一个用户。