Size: a a a

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

2021 May 23

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Если поиск происходит постоянно, то сделайте map-ы, ключ-значение
И еще, может ваш случай как раз, НИКОГДА не делайте байндинг к тяжелым функциям
[item]="findItem()", где findItem пробегается по тысяче элементов - так нельзя
источник

В

Владимир in Angular - русскоговорящее сообщество
)
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Ну вы замокали через setTimeout(), который сработает ровно 1 раз
upd. а, понял проблему, извиняюсь
источник

В

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

Вот какой алгоритм я сделал:
1) Сортирую по типу выходящие данные, выходит так:
{
'categories': [тут массив объектов категорий]
'posts': [тут массив объектов публикаций]
}
2) Дальше я подписываюсь в компоненте на сабж, и если пришло изменение, то тут:
- Если нужно найти текущий объект категории, тогда циклом ищу в subj.caterories, выхожу break при совпадении
- Если нужно найти все дочерние публикации в текущей категории, то тут прохожу по всем объектам в subj.posts и выбираю все у которых parent_id == category.id. И так же с комментариями, изображениями и тд.

Получается что поиск происходит при инициализации компонента и при обновлении сабжа.
Можно как-то улучшить такой алгоритм?
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
error в вашем случае прибивает сабжект намертво. Используйте catchError
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Если сабжект обновляется нечасто, то я не знаю, что можно сделать
Если часто, то distinctUntilChanged или filter вам помогут. Или используйте какую-нибудь реализацию стора (ngrx/ngxs/akita), потому что они и есть большой оптимизированный сабжект
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Как я и говорил, сделайте замеры в devTools/performance, посмотрите, что выполняется дольше всего
источник

В

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

А можете подсказать еще, вот я в каждом компоненте написал subscription.unsubscribe() при ngOnDestroy. Но мне непонятно в каких случаях прекращается подписка.

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

А если у меня компонент открывается при условии *ngIf="!hideComments", тогда при hideComments == false подписка прекратиться?
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
Почитайте про жизненный цикл компонентов
Если компонент отображается через ngIf, то есть удаляется и появляется - компонент пересоздается, весь код в хуках выполняется заново. Роутинг - то же самое, если компонент пропадает из dom, то он умирает, вызывается ngOnDestroy
Если на новом роуте те же компоненты - надо смотреть конфигурацию
path1/:param1 => MyComponent1------ в таком случае зависит от настроек роутера, по умолчанию он будет использовать тот же компонент и не будет пересоздавать
В остальных случаях создастся новый компонент, а старый умрет
источник

В

Влад in Angular - русскоговорящее сообщество
это много прояснило, спасибо большое за разъяснения
источник

fi

farrukh ibnulfakhr in Angular - русскоговорящее сообщество
Всем привет, где лучше всего учить RxJS?
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
что это)
источник

SC

Serega Carbon in Angular - русскоговорящее сообщество
https://angular.io там секция по RxJs есть
источник

VM

Vladimir Murashko in Angular - русскоговорящее сообщество
случайно отправил
источник

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
На реальном проекте :)
Загуглите rxjs practice, мне, например, выдало это https://github.com/btroncone/learn-rxjs , выглядит нормально
источник

S

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

RY

Roman Yazvinsky in Angular - русскоговорящее сообщество
По-моему это больше похоже на задачки с егэ на олимпиаде для 4-го класса :)
источник

S

Stanislav in Angular - русскоговорящее сообщество
мое дело предложить)
источник

fi

farrukh ibnulfakhr in Angular - русскоговорящее сообщество
спасибо всем, попробую
источник

fi

farrukh ibnulfakhr in Angular - русскоговорящее сообщество
у нас проект тоже полностью написан на rxjs, а на первой работе мы почти все делали через toPromise так как не было почти надобности в rxjs, а сейчас приходится читать по интуиции весь код
источник