Wpis z mikrobloga

#react #angular

Cześć Mircy, nie znalazłem tagu rxjs, a potrzebuję podpowiedzi.
Prosty scenariusz, chcę w aplikacji React użyć Rxjs. Zamiast jednak pisać requesty fetchem, chcę użyć operatora ajax. Ten operator jednak chcę zamknąć w funkcji httpRequest, która zwróci Observable. Czemu? Ponieważ chcę mieć kontrolę czy czasem nie trzeba odświeżyć refresh tokena. Niestety widzę że w obrębie komponentu cały czas wykonywane jest ponownie to zapytanie HTTP :( Ma ktoś pomysł?

O to kod funkcji httpRequest (mojej):
return ajax({
...request,
url: ignoreApiAddress ? request.url :
${API.API_ADDR}${request.url},
}).pipe(
catchError((err: any, caught: Observable) => {
if (!manuallyHandleNetworkError) {
window.alert('lol');
}
return caught;
})
)

Komponent:

const List = () => {
const { t } = useTranslation()

useEffect(() => {
httpRequest(
{ url: "/events", method: "GET"},
{ manuallyHandleNetworkError: true }
).pipe(
take(1),
tap(ajax => {
console.log(ajax);
return ajax.response
}),
tap((resp: any) => {
console.log(resp)
}),
catchError((err: any) => {
console.log(err);
return EMPTY;
})
).subscribe()
}, [])

return (
<>
tEST
xD

)
}
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Sheppard28: Wybacz, po prostu problemem było to że chciałem mieć funkcję która "złapie" error i wyświetli np. notyfikacje, a jak nie to przepuści dalej observable po prostu. Udało się to osiągnąć przez: ajax(...).pipe(catchError((err: any) => {
// zrób coś, wyświetl notyfikację
throwError(err);
})
  • Odpowiedz