내 응용 프로그램의 웹 서버에서 일부 데이터를로드하려고합니다. 그리고 수술의 비동기 성질 때문에, 완료하는데 얼마나 오래 걸릴지 미리 알 수있는 방법이 없습니다. 작업이 진행 중임을 사용자에게 알리기 위해로드 표시기를 사용합니다.RxJava 2 및 Android에서 onError()를 지연하는 방법은 무엇입니까?
fun loadData(){
showLoader() // show loading indicator
Single.fromCallable {
// http request logic goes here
}.delay(1000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object : DisposableSingleObserver<String>() {
override fun onSuccess(data: String) {
// do something
hideLoader() // on success, hide indicator
}
override fun onError(e: Throwable) {
displayErrorMessage()
hideLoader() // on error hide indicator
}
})
}
내가 그래서이 delay()
연산자를 사용하는 1 초 이상 로딩 표시기를 보여주고 싶은,하지만 :
이이 (가)이 코 틀린와 RxJava 2를 사용 내놓았다이다 (나는 분명 희망) 작동이 성공하면 문제가 예상대로 작동하지만 오류가 발생하면 표시기가 1 초 후에 즉시 사라집니다.
그래서 1 초 후에 onError()
메서드를 실행할 수있는 방법이 있습니까? 감사합니다
Observable.timer (1, TimeUnit.SECONDS) .switchMapSingle {Single.fromCallable {// ...}}'로 갈 수 없습니까? – mcassiano
mcassino 완벽하게 작동합니다. 'timer()'연산자를 먼저 Observable로 변환하는 대신 Single에 직접 적용 할 수 있습니까? –
당신은 할 수 :) 나는 Single.timer() 다음지도() 생각도 할 수있는 올바른 방법입니다. – mcassiano