Перед использованием rx.Observable
я использовал пользовательский обратный вызов с модификацией, поэтому я могу добавить определенную логику для обработки ответа/ошибки, и мне не нужно делать это внутри обратного вызова для каждого запроса в виде стандартного кода.
Я заставляю пользователей использовать пользовательский обратный вызов, помещая его в сигнатуру метода следующим образом:
@GET("/user_endpoint/")
void getUser(CustomCallback<User> callback);
@GET("/profile_endpoint/")
void getProfile(CustomCallback<Profile> callback);
но теперь, когда я возвращаю Observable
:
@GET("/user_endpoint/")
Observable<User> getUser();
@GET("/profile_endpoint/")
Observable<Profile> getProfile();
Я не могу найти способ убедиться, что пользовательский обратный вызов всегда передает ошибку/ответ.
Кроме того, с Retrofit2.0, как я могу заставить пользователя использовать пользовательский обратный вызов с возвращенным объектом Call
?
CustomCallback для справки:
public abstract class CustomCallback<T> implements Callback<T> {
@Override public final void success(T t, Response response) {
// do some logic
onSuccess(t);
}
@Override public final void failure(RetrofitError error) {
// do something with the error here such as show a Toast
Toast.makeText(Application.getInstance(), error.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
onFailure(error);
}
public abstract void onSuccess(T response);
public abstract void onFailure(Throwable error);
}