Я изучаю Rx js и работаю над приложением ioni c 4, которое использует плагин ioni c -ative http для вызова API (возвращает обещание). Я использую приведенный ниже код для выполнения вызова API / refre sh token logi c.
Код файла утилиты: (Используется из оператора для преобразования обещания в наблюдаемое)
from(this.http.get(url, param, headerMap));
Код файла сервиса
return this.utilService.httpCall2('GET', taskURL, null, null).pipe(catchError(err=>{
if(err.status==401){
// return this.utilService.refreshTokenAndRetryCall2().toPromise().then(()=>{
// return this.utilService.httpCall2('GET', taskURL, null, null);
// });
return this.utilService.refreshTokenAndRetryCall2()
}
else{
throw err;
}
}
),
tap(resp => console.log("API response is", JSON.stringify(resp))), map(resp => JSON.parse(resp.data)),
tap(resp => console.log("parsed data is ", JSON.stringify(resp))));
I хотите достичь нижеприведенного сценария
- Вызов API с использованием утилиты http method this.utilService.httpCall2 ('GET', taskURL, null, null).
- Если срок действия токена истек, API возвращает 401 и вызывает метод refre sh token.
- После refre sh токен снова вызывает исходный API для получения нужных данных
Итак, проблема, с которой я сталкиваюсь, заключается в вызове refreshTokenAndRetryCall2 (). Я не могу выполнить оригинал вызов API с токеном refre sh (т. е. this.utilService.httpCall2 ('GET', taskURL, null, null)