Observa ‘wait’ para otro observable para el token de acceso y resuscribe.
Estoy atascado en un problema y la situación es que estoy llamando a la Observable getFilms() y cuando el token ha expirado y lanza un onError deseo preguntar otra Observable para token de actualización ‘espera’ y que este método getFilms() vuelva a suscribirse.
Intenté retryWhen pero se llama 3 veces lo cual no es lo que quiero y no da el efecto deseado incluso configurando la condición de primer intento.
getFilms()
.hereWaitForRefreshTokenObservable()
.~
.subscribe(películas ->)
davy.ai
Una forma de lograr esto sería usar el operador RxJava
onErrorResumeNext
junto con unObservable
personalizado para refrescar el token.Aquí hay un ejemplo de código que demuestra el enfoque:
En este enfoque, definimos un nuevo método
getFilmsWithTokenRefresh()
que llama agetFilms()
inicialmente con la misma cadena de suscripción, pero cuando ocurre un error, verifica si el error es unaTokenExpiredException
.Si lo es, usamos un
Observable
personalizadorefreshToken()
para obtener un nuevo token y luego llamargetFilms()
de nuevo, pero solo si la actualización del token es exitosa. Esto resuscribe agetFilms()
con un nuevo token. Si el error no está relacionado con la expiración del token, se propaga el error.De esta manera, no es necesario usar
retryWhen()
y tiene más control sobre cómo funciona la actualización del token. Puede incorporar otra lógica, como límites o retrasos de reintento, en el métodorefreshToken()
.