169 похожих чатов

Всем привет Почему то не получается сделать повторение запроса при ошибке В

компоненте делаю так:
this.cityByCodeService
.getCities()
.pipe(
retryWhen((errors) => {
return errors.pipe(delay(2000), take(5));
}),
)
.subscribe((cityMapping) => {
this.city = cityMapping[this.columnValue];
});

А в сервисе делаю так:
getCities(): Observable<CityMapping> {
if (this.loading) {
return throwError('LOADING');
}

if (this._cities$) return this._cities$;

this.loading = true;

this._cities$ = this.citiesService.getCities().pipe(
map((cities) => {
return cities.reduce((acc, value) => {
return { ...acc, [value.ubp_city_id]: value.name };
}, {} as CityMapping);
}),
take(1),
finalize(() => (this.loading = false)),
);

return this._cities$;
}

Подскажите в чем проблема?

11 ответов

4 просмотра

для начала попробуйте throwError(new Error("'LOADING'"))

кстати, советую обернуть данные в такой generic, тут пример , так удобней работать https://github.com/evoytenkoapps/angular-best-practices/blob/c686d760fef426080ad9ab91d60dfe3ecfc55f67/examples/src/app/data-facade/_services/api/animal-http-production.service.ts#L19

Денис-Писаренко Автор вопроса
Евгений Гений
для начала попробуйте throwError(new Error("'LOADI...

Не помогло, сам повтор как будто не срабатывает

Денис-Писаренко Автор вопроса
Евгений Гений
кстати, советую обернуть данные в такой generic, т...

Да я пока в черновую пишу, потом отрефакторю красиво, но спасибо)

Денис Писаренко
Да я пока в черновую пишу, потом отрефакторю краси...

поставьте дебаг. возвращается ли вообще return throwError('LOADING');

Денис Писаренко
Да я пока в черновую пишу, потом отрефакторю краси...

прологируейте эррор this.cityByCodeService .getCities() .pipe( catchError(err= > { console.error(err); return throwError(err)}) retryWhen((errors) => { return errors.pipe(delay(2000), take(5)); }), )

Денис-Писаренко Автор вопроса
Евгений Гений
прологируейте эррор this.cityByCodeService ...

но он как будто не ждет 2сек а сразу пытается вызватьеще раз

Денис-Писаренко Автор вопроса
Евгений Гений
попробуйте так return of().pipe(delay(2000), swit...

Да вот именно что такой код как у меня всегда работал, только там был ориентир на ошибку с http запроса, а тут я как бы сам ее инициализирую

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
49
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
Ребята, а из API геокодеров (по адресам в РФ) что сейчас актуального и есть ли среди актуального бесплатное/с нормаотным лимитом запросов? ситуация простая - на сайте периоди...
Dreamer_0x01 VeseloV
8
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
Есть тут те у кого дети есть + 2 работы + в зал ходят + в семейной жизни все хорошо?
Abdul-Aziz M.
13
кто шарит: mattermost отслеживает что ты на пк запускаешь?
Valentin
13
Карта сайта