所以场景是我有一个可能没有任何用户的用户表。
@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());
});