Size: a a a

Angular - русскоговорящее сообщество

2021 April 03

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Maksim
я тоже против стор свалок, но тут в другом дело. Человек считает subject костылем и не понимает когда какие методы/операторы нужно использовать, и учится на примере стора
я хочу отказаться от стора если это возможно. но не понимаю как при этом влиять на поток данных с сервера, ведь пост запрос как минимум вернет один обьект, а то и вовсе - пустое тело 201.
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
явно запрос пост должен вызвать после себя создание холодного потока на список и еще с учетом фильтров
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
а еще бывают ошибки корсов например которые не сервер выкинул которые всех подписчиков в том числе кликовых - у меня убивало. то есть если кнопка "добавить" вернула ошибку Корс, то кнопка больше не работает. я фигел с этих приколов
источник

M

Maksim in Angular - русскоговорящее сообщество
Авраам Петрович
да, это если я сделаю .pipe(shareReplay()) я гарантирую что каждый кто подпишется получит последнюю копию.
встает вопрос - а новую он как будет получать?
не понимаю вопроса. Через store$.next()? Через команды? Через эффекты? Какая вам сложность нужна, так и будет
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Maksim
не понимаю вопроса. Через store$.next()? Через команды? Через эффекты? Какая вам сложность нужна, так и будет
если у меня есть субьект, я могу сменить состояние, верно. но вы говорите это неправильный путь. у дамы DeborahK я видел где она написала кучу обсерваблов зависящих друг от друга и вообще без единого метода
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
то есть у нее стора не было в принципе. это выглядело божественно.
а потом пришлось делать add/update/delete и я резко приуныл
источник

M

Maksim in Angular - русскоговорящее сообщество
Авраам Петрович
если у меня есть субьект, я могу сменить состояние, верно. но вы говорите это неправильный путь. у дамы DeborahK я видел где она написала кучу обсерваблов зависящих друг от друга и вообще без единого метода
где я говорил что это неправильный путь?
у меня тоже в коде куча обсерваблов зависящих друг от друга без единого метода
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
потому что каждая из add/update/delete должна менять состояние компонента, и еще раз менять когда придет с сервака ответ, и не боятся что он может не прийти
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Maksim
где я говорил что это неправильный путь?
у меня тоже в коде куча обсерваблов зависящих друг от друга без единого метода
наоборот правильный
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
вот я так же хочу. только не могу понять как без методов делать изменение потока который вообще-то холодный
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
то есть на помощь пришла только теория cqrs - что команда есть пейлоад и тип.
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
и получилась та каша что видно сейчас.
источник

M

Maksim in Angular - русскоговорящее сообщество
Авраам Петрович
потому что каждая из add/update/delete должна менять состояние компонента, и еще раз менять когда придет с сервака ответ, и не боятся что он может не прийти
специально в статье целая глава "Обработка ошибок".
Ну придет ошибка, ничего страшного, меняем состояние в сторе на "ошибка" и обрабатываем в  интерфейсе как угодно (показываем уведомление, показывать кнопку повторить запрос, и т.д.)
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
какие еще варианты? правильная ли каша, где её править?
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Maksim
специально в статье целая глава "Обработка ошибок".
Ну придет ошибка, ничего страшного, меняем состояние в сторе на "ошибка" и обрабатываем в  интерфейсе как угодно (показываем уведомление, показывать кнопку повторить запрос, и т.д.)
апи у меня отдает данные в спецификации.
эта спецификация есть в слое который запросы делает.
и ошибки из нее должны выдаться в форму которая вообще в UI
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
и второе - ошибки бывают браузерные - корсы чаще всего. которые почему-то валят подписку и вообще все что к ней имело отношение. вчера по кнопке "добавить" поймал "корс" - и кнопка больше не работала
источник

MA

Maxim Afanasev in Angular - русскоговорящее сообщество
Авраам Петрович
явно запрос пост должен вызвать после себя создание холодного потока на список и еще с учетом фильтров
Нет, запрос не должен вызывать никаких сайд-эффектов. Создайте сабжекты на ваши add/delete/update, оберните в combineLatest вместе с состоянием фильтров и в switchMap делайте запрос.
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
Maxim Afanasev
Нет, запрос не должен вызывать никаких сайд-эффектов. Создайте сабжекты на ваши add/delete/update, оберните в combineLatest вместе с состоянием фильтров и в switchMap делайте запрос.
понял. я так пробовал в начале, но когда обернул в комбайн латест - я каждый раз получал последний сигнал на add/delete/update в итоге он выполнялся каждый раз - я уже добавил запись с id: 1, вызывают делит, он видит последний - и сначала добавляет id: 1 еще раз
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
а если в теле пайпа его ставить null, типа сделано - то пайп падал в вечную рекурсию т.к. одно вызывало другое
источник

АП

Авраам Петрович... in Angular - русскоговорящее сообщество
потом я попробовал сделать zip()-ом, понимая что он не копирует последние значения, а ждет следующее в каждом потоке и вручную кидал пустые при каждой команде при помощи чуть ли не XOR
источник