Как отменить простой вызов функции без "lodash" внутри Angular httpClient errorCatch
У меня есть функция, которая вызывается внутри Angular HttpClient catchError. Я хочу отменить вызов функции без использования Lodash. Здесь нельзя использовать debounceTime, так как функция не является темой. Есть ли эквивалент ES5/ES6?
this.http.get(`api/test`)
.pipe(
catchError((err) => {
alertUser(err); // Option 1 - debounce here
return throwError(err);
}),
);
alertUser(err) {
alert(err.text); // Option 2 - debounce here
}
1 ответ
Не совсем уверен, что вы хотите... если вы имеете в виду, что вы хотите по какой-то причине отложить функцию, это легко сделать с timer
return timer(1000).pipe( // 1000 ms delay
tap(t => alertUser(err)), // call this in tap
switchMapTo(throwError(err)) // then throw the error again
);
если вы действительно хотите отменить его с помощью rxjs и убедиться, что он запускается только каждые x секунд, вам нужно добавить тему для использования, предположив, что у вас есть AlertService, например:
private alertSource = new Subject();
alert$ = this.alertSource.pipe(debounceTime(1000)); //debounce the subject
constructor() {
this.alert$.subscribe(err => alert(err)); // subscribe to it
}
alertUser(err) {
this.alertSource.next(err); // send through subject
}
затем просто вызовите свою функцию alertUser для служб оповещения по мере необходимости.