Size: a a a

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

2016 August 04

MF

Maksim Fomin in Angular - русскоговорящее сообщество
Запрашивает с сервера объект с конкретным ид
источник

MF

Maksim Fomin in Angular - русскоговорящее сообщество
И нужно его получить
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
а дальше?
источник

MF

Maksim Fomin in Angular - русскоговорящее сообщество
Но при этом он должен также попасть в массив всех данных, и этот массив должен быть отправлен в общий обсервер, чтобы не рушить парадигму
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
Ну просто не очень ясно, там же ты можешь сделать без subscribe, и отдавать фильтрацию
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
Ох. Ну есть do() - вот тут можешь ловить данные
источник

MF

Maksim Fomin in Angular - русскоговорящее сообщество
Тяжело с телефона писать адекватно и развернуто, понимаю что меня сложно сейчас понять
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
Ну это сервис запросов, а не синглтон с данными?
источник

MF

Maksim Fomin in Angular - русскоговорящее сообщество
Да
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
Тогда он наружу отдает Observable
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
И перед передачей во вне, накладывает вот эти take, map и прочее
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
Я бы так делал
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
И кому нужны данные, уже делают subscription
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
вот тут можно развернуто спросить
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
источник

АО

Алексей Охрименко in Angular - русскоговорящее сообщество
делаем observable на 1 элемент - отдаем наружу но в do() складываем эти элементы в массив сервиса - массив можно забрать уже из метода сервиса

win win
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
Если тебе нужно где-то кэширование на этом этапе, а не напрямую запрос слать. То вот можно использовать внутри сервиса прослойку из subject, в который данные писать, если они у тебя уже есть и отдавать снова toObservable(). А если данные будут позже, то дослать их next()
источник

MF

Maksim Fomin in Angular - русскоговорящее сообщество
Короче.
Есть сервис который оперирует одним объектом базы данных
У него есть методы - LoadAll(), Load(), Delete(), Update(), Create()

Этот метод имеет один публичный обсервер - result$. После любой операции с данными туда должен приходить массив актуальных данных.
Это реактивность, это логично.

Но сейчас мне нужно в одном конкретном месте получить один объект с конкретным ID. Текущая логика функции Load такова, что она получает с сервера объект под ID,
записывает его в контейнер данных (массив для простоты понимания), далее этот массив отправляется в result$.next()

Вариант как делают почти все - слушают $result и фильтруют пришедшие данные по ID. Мне это не нравится - зачем? Я знаю конкретный объект, я знаю что мне нужно, я его уже получил. Зачем мне еще раз его искать, лишняя нагрузка и вообще бред. Вот я и ищу вариант вернуть 1 эллемент, при этом н ломая парадигму реактивности, чтобы данные как и раньше везде обновлялись когда делаю load.
источник

Sergey Фrolov in Angular - русскоговорящее сообщество
Ну вот я тебе и описал. result$ вернуть. А что туда положить - это твой мидлвар - есть значение, тогда его. Нет - запрос сервера, тут subscribe и в result$
источник

MF

Maksim Fomin in Angular - русскоговорящее сообщество
Тогда result будет в разных ситуациях возвращать разные данные. Это не верный подход
источник