2017-02-20 5 views
1

내 Interactor에서 Retrofit2를 사용하여 안정적인 API에서 간단한 CRUD 작업을 수행하는 데모 앱에 Mosby MVI 라이브러리를 사용하고 있습니다. Retrofit이 오류로 응답 할 때 Throwable을 포함하는 예제 App에서와 매우 유사한 ViewStates를 생성했습니다. 이 경우 render() 기능은 재시도 단추가있는 오류 화면을 표시합니다. 다시 시도 버튼을 클릭하면 실패한 인 텐트의 마지막 항목을 다시 보내고 싶습니다.Mosby MVI - 의도를 다시 시도하는 방법?

retryWhen()과 같은 것을 인 텐트에 추가하고 싶습니다. 물론 이는 onError()에 의해서만 트리거됩니다.

이런 종류의 동작을 추가하는 간단한 방법이 있습니까?

답변

1

사실 나는 combineLatest()을 사용하여 직접 문제를 해결했습니다. retrySubject는 이전 인 텐트의 내용을 알 필요가 없습니다.

주목할 점이 하나 있습니다. combineLatest()는 모든 Observable이 첫 번째 항목을 구독 한 후에 만 ​​항목을 방출합니다. Mosby가 구독을 한 후 재 시도를 초기화해야하는 이유가 있습니다.

@Override 
    protected void onStart() { 
    super.onStart(); 
    retrySubject.onNext(true); 
} 

또한 Github

에서 @sockeqwe에서 답을 참조하시기 바랍니다