Size: a a a

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

2021 March 21

В

Влад in Angular - русскоговорящее сообщество
Евгений Удалов
в сервисе юзай behaviorsubject. что-то мне подсказывает, что у тебя там обычный массив
что юзать?
а массивы бывают необычные?
источник

🏡K

🏡 ILshat Khamitov in Angular - русскоговорящее сообщество
new BehaviorSubject([])
источник

В

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

ЕУ

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

В

Влад in Angular - русскоговорящее сообщество
Евгений Удалов
нет. у тебя компонент не в курсе, что в сервисе что-то поменялось. можно конечно извращаться с ивентами из чайлда, но зачем, если есть потоки
Подскажите еще, пожалуйста, какие есть ограничения в BehaviorSubject? Может он медленный или требует много памяти, что нужно еще о нем знать.

У меня массив объектов очень большой, ~10 тыс. элементов, пару мегабайт данных. И при каждом создании/обновлении мне нужно пересобрать все данные, в основном это сортировка и небольшие мат. вычисления.
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Влад
Подскажите еще, пожалуйста, какие есть ограничения в BehaviorSubject? Может он медленный или требует много памяти, что нужно еще о нем знать.

У меня массив объектов очень большой, ~10 тыс. элементов, пару мегабайт данных. И при каждом создании/обновлении мне нужно пересобрать все данные, в основном это сортировка и небольшие мат. вычисления.
Ограничений нет, но Вам действительно нужно столько данных?
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
Влад
Подскажите еще, пожалуйста, какие есть ограничения в BehaviorSubject? Может он медленный или требует много памяти, что нужно еще о нем знать.

У меня массив объектов очень большой, ~10 тыс. элементов, пару мегабайт данных. И при каждом создании/обновлении мне нужно пересобрать все данные, в основном это сортировка и небольшие мат. вычисления.
он норм. просто если ты выводишь не постранично, то хотя бы virtual scroll юзай
источник

В

Влад in Angular - русскоговорящее сообщество
Oleg Safonov
Ограничений нет, но Вам действительно нужно столько данных?
Может вы мне подскажете как оптимизировать работу с данными.

У меня в БД хранятся записи, и у каждой есть свой тип. В сервисе я храню все данные, которые получил от сервера. Затем в компоненте узнаю ИД родительской записи по URL /category/:id и мне нужно выбрать из всех данных только те, которые являются дочерними определенного типа, отсортировать их, затем выбрать дочерние дочерних с тем же типом, отсортировать, и тд. рекурсивно.

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

Как можно улучшить этот алгоритм?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Влад
Может вы мне подскажете как оптимизировать работу с данными.

У меня в БД хранятся записи, и у каждой есть свой тип. В сервисе я храню все данные, которые получил от сервера. Затем в компоненте узнаю ИД родительской записи по URL /category/:id и мне нужно выбрать из всех данных только те, которые являются дочерними определенного типа, отсортировать их, затем выбрать дочерние дочерних с тем же типом, отсортировать, и тд. рекурсивно.

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

Как можно улучшить этот алгоритм?
А нельзя грузить не все, а только то что нужно? Вы ж переходите на конкретную категорию,грузить нужные данные тогда уже
источник

В

Влад in Angular - русскоговорящее сообщество
Oleg Safonov
А нельзя грузить не все, а только то что нужно? Вы ж переходите на конкретную категорию,грузить нужные данные тогда уже
К сожалению нет, это приложение будет работать оффлайн, поэтому всегда загружает все, что есть в БД
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
Влад
К сожалению нет, это приложение будет работать оффлайн, поэтому всегда загружает все, что есть в БД
тогда пагинация или вирт скролл. там тормозит не столько обработка массива, сколько рендеринг
источник

P

Proto in Angular - русскоговорящее сообщество
Влад
Может вы мне подскажете как оптимизировать работу с данными.

У меня в БД хранятся записи, и у каждой есть свой тип. В сервисе я храню все данные, которые получил от сервера. Затем в компоненте узнаю ИД родительской записи по URL /category/:id и мне нужно выбрать из всех данных только те, которые являются дочерними определенного типа, отсортировать их, затем выбрать дочерние дочерних с тем же типом, отсортировать, и тд. рекурсивно.

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

Как можно улучшить этот алгоритм?
После вставки новой записи пересчёт делать не надо. Надо вставить её в исходную структуру и выборку
источник

В

Влад in Angular - русскоговорящее сообщество
Proto
После вставки новой записи пересчёт делать не надо. Надо вставить её в исходную структуру и выборку
Т.е. создавать BehaviorSubject нужно в родительском компоненте, а не в сервисе?
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
в сервисе
источник

P

Proto in Angular - русскоговорящее сообщество
Это без разницы. Работать будет и так, и так. Но лучше в сервисе
источник

ЕУ

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

P

Proto in Angular - русскоговорящее сообщество
Компонент должен знать только то, что нужно отобразить
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Евгений Удалов
тогда пагинация или вирт скролл. там тормозит не столько обработка массива, сколько рендеринг
trackBy используете? OnPush?
источник

ЕУ

Евгений Удалов... in Angular - русскоговорящее сообщество
Oleg Safonov
trackBy используете? OnPush?
не ко мне вопрос
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Евгений Удалов
не ко мне вопрос
Сорян))
источник