Size: a a a

2019 December 11

S

Serhii in Angular Kyiv
Alex S
почему бы не всунуть это дело в эффекты?
возвал запрос, обработал ответ и норм ответ записал в стор. Если чёт не то, то записал стейт ошибку..
а селекторы потом просто сделают свою работу

+ селекторы пересчитываются при обновлении стейта. Это нуно учесть в калькуляции
Вопрос в том, чтоб просто залогировать ошибку (и потом смотреть уже в бекенд, почему что неправильно сработало), а не упасть полностью.
Почему не эффекты? Потому что тогда вообще проще перейти обратно в pull-based архитектуру и полностью все рассчеты проводить в сервисах.

Плюс, суть использования селекторов именно в том, чтоб сохранять только оригинальные данные и не дублировать выполнение кода.
источник

S

Serhii in Angular Kyiv
Гм, подумал тут чуть больше.
Возможно вариант в селекторах возвращать тип данных с оберткой. А-ля WithLogs<SomeType>. И в него писать, если были какие-то ошибки. А потом уже на компоненте/фасаде, где эти селекторы вызываются, обрабатывать полученные сообщения.
Вроде бы и чистая функция выходит (как минимум по определению). Но по факту так тоже не нравится.
источник

DG

Danil Gudz in Angular Kyiv
Serhii
Гм, подумал тут чуть больше.
Возможно вариант в селекторах возвращать тип данных с оберткой. А-ля WithLogs<SomeType>. И в него писать, если были какие-то ошибки. А потом уже на компоненте/фасаде, где эти селекторы вызываются, обрабатывать полученные сообщения.
Вроде бы и чистая функция выходит (как минимум по определению). Но по факту так тоже не нравится.
с ErrorHandler'ом не пробовал? мне тот вариант ментально нравится
источник

СБ

Сергій Бабіч in Angular Kyiv
Serhii
Гм, подумал тут чуть больше.
Возможно вариант в селекторах возвращать тип данных с оберткой. А-ля WithLogs<SomeType>. И в него писать, если были какие-то ошибки. А потом уже на компоненте/фасаде, где эти селекторы вызываются, обрабатывать полученные сообщения.
Вроде бы и чистая функция выходит (как минимум по определению). Но по факту так тоже не нравится.
і це прям да
источник

S

Serhii in Angular Kyiv
Danil Gudz
с ErrorHandler'ом не пробовал? мне тот вариант ментально нравится
Не то, чтоб не пробовал. Но throw означает, что ты прерываешь выполнение функции.
источник

S

Serhii in Angular Kyiv
Сергій Бабіч
і це прям да
Ти про останній абзац "да", чи про саму ідею? :)
источник

СБ

Сергій Бабіч in Angular Kyiv
Serhii
Ти про останній абзац "да", чи про саму ідею? :)
про ідею.
источник

СБ

Сергій Бабіч in Angular Kyiv
так є можливість закумулювати всі помилки і обробити їх деінде, в залежності від контекста.
Плюс можна безпечно їх на юайці вивести в разі чого
источник

S

Serhii in Angular Kyiv
Якщо сильно упоротись, то це навіть можна назвати монадичною функцією 🥶
источник

S

Serhii in Angular Kyiv
Одна проблема тут - дуже вже багато оверхеду з точки зору коду виходить.
источник

AS

Alex S in Angular Kyiv
Serhii
Вопрос в том, чтоб просто залогировать ошибку (и потом смотреть уже в бекенд, почему что неправильно сработало), а не упасть полностью.
Почему не эффекты? Потому что тогда вообще проще перейти обратно в pull-based архитектуру и полностью все рассчеты проводить в сервисах.

Плюс, суть использования селекторов именно в том, чтоб сохранять только оригинальные данные и не дублировать выполнение кода.
ну ок
ты выполняешь, какой-то рассчёт в эффекте
отлавливаешь ошибку в catchError, который смотрит в твой LoggerService
и остальные вычисления/операции добиваешь в finalize, чтоб “не упасть на ошибке”

а оригинальные данные, допустим, ты можешь сохранить дополнительно, если они ну 100% нужны (TBD)
источник

AS

Alex S in Angular Kyiv
при желании, ты можешь и из сервиса получить селектор, написать пайп на него и будет чуть ли не то же самое. Но сам селектор останется чист - получил стейт и отдал тому кто попросит. А дальше в сервисе, в пайпе, обработал результат
источник

AS

Alex S in Angular Kyiv
или каким-то образом, если не подходит finalize, то вынести в tap() логгирование ошибки (соответственно, обойтись и без catchError() ). Раньше видел синтаксисы, что tap принимает success + error callback. Последние версии, скажу честно, не смотрел
источник

DG

Danil Gudz in Angular Kyiv
Alex S
ну ок
ты выполняешь, какой-то рассчёт в эффекте
отлавливаешь ошибку в catchError, который смотрит в твой LoggerService
и остальные вычисления/операции добиваешь в finalize, чтоб “не упасть на ошибке”

а оригинальные данные, допустим, ты можешь сохранить дополнительно, если они ну 100% нужны (TBD)
помнится мне finalize выполняет колбэк без параметров)
источник

AS

Alex S in Angular Kyiv
Danil Gudz
помнится мне finalize выполняет колбэк без параметров)
блин. Точн
источник

M

Malikov in Angular Kyiv
а чем вы руководствуетесь, когда решаете, внедрять store в приложение или нет?
источник

AS

Alex S in Angular Kyiv
Malikov
а чем вы руководствуетесь, когда решаете, внедрять store в приложение или нет?
эм.. ну у меня всё просто: ответ 100% да, т.к. приложения большие и без грамотного стейт менеджемента не комельфо


+ шарить даты через сервисы - ну такое.. на это не стоит)
источник

Sergey Фrolov in Angular Kyiv
Alex S
эм.. ну у меня всё просто: ответ 100% да, т.к. приложения большие и без грамотного стейт менеджемента не комельфо


+ шарить даты через сервисы - ну такое.. на это не стоит)
Чем тебе сервисы не стор? )
источник

Sergey Фrolov in Angular Kyiv
Ну примитивный
источник

Sergey Фrolov in Angular Kyiv
А то привет event-модель управления
источник