如果是onError,有没有办法将Single映射到另一个Single?

时间:2018-04-03 02:05:41

标签: rx-java2 android-room

所以场景是我有一个可能没有任何用户的用户表。

@Dao
public interface UserDao {
    @Query("SELECT * FROM user LIMIT 1")
    Single<UserEntity> getUser();
}

由于RxRoom,如果没有用户,Single将触发onError。在这种情况下,我想将此Single映射到另一个从服务器中提取用户的Single。

Single<UserEntity> getRemoteUser();

目前,我正在考虑像这样连接单打:

userDao.getUser()
       .subscribe(
               user -> {
                   Timber.e("found user");
               },
               throwable -> {
                   Timber.e(throwable.getMessage());
                   getRemoteUser().subscribe(....);
               });

但我想知道有没有更好的方法来实现这一目标?也许是这样的:

    userDao.getUser()
       .mapOnError(throwable -> getRemoteUser())
       .subscribe(
               user -> {
                   Timber.e("found user");
               },
               throwable -> {
                   Timber.e(throwable.getMessage());
               });

0 个答案:

没有答案