169 похожих чатов

Ребята а почему использование async методов в компонентах считается

плохим тоном?

9 ответов

4 просмотра

потому что ты к промису приводишь

Sergei-Sergeevich Автор вопроса
Denis Makarov
потому что ты к промису приводишь

да понимаю, а почему это плохо?

Sergei-Sergeevich Автор вопроса
Denis Makarov
потому что ты к промису приводишь

трудно противостоять желанию упростить код (например убрать пару строк и вложенность заменив подписку с take(1) на await .toPromise() в случае с каким-нибудь диалогом подтверждения

Sergei Sergeevich
да понимаю, а почему это плохо?

напишу чисто свое мнение 1) твой код становится не однотипным, местами промисы, местами потоки. 2) лично в моей практике возникало, что приходилось дальше по промису еще доп обработку добавлять, пришлось изменять сразу несколько компонент переделывая это на поток(так как промис передавался через несколько сущностей). 3) промисы тяжело отписывать, приходится передавать контроллеры для отмены. И если конкретно сейчас по каким-то непонятным причинам отписка не нужна, то это не значит, что через месяц требования не поменяются и она не понадобится, тогда выполняешь пункт 2 4) у toPromise есть особенность, если ты делаешь toPromise на поток/сабжект, который не комплитится, то промис так и зависнет в состоянии pending. Отсюда, чтобы понять, что промис реально резолвится нормально, надо изучить всю цепочку потоков

Sergei-Sergeevich Автор вопроса
Denis Makarov
напишу чисто свое мнение 1) твой код становится не...

Благодарю за развернутый ответ. я почему то был уверен что в случае с .toPromise() а так же с take(1)/first() отписка происхождит автоматически

Sergei Sergeevich
Благодарю за развернутый ответ. я почему то был ув...

она происходит, но важно понимать, что она может не успеть произойти на момент, когда данные уже не нужны. Например, компонент был удален. Еще есть нюансы с тестами и HMR. по toPromise нюанс такой, что например подписка на сабжект вернет значение только тогда, когда он будет закомплитен, те опять же надо точно знать, что поток завершается или вызывать тот же take(1), и только потом toPromise

Sergei-Sergeevich Автор вопроса
Denis Makarov
она происходит, но важно понимать, что она может н...

Спасибо! в тестах я вроде решаю за счет fakeAsync. а вообще toPromise использую в случае когда например нужно дождаться закрытия диалога или что то в этом роде. Но я пересмотрю свой подход, благодарю

Sergei Sergeevich
Спасибо! в тестах я вроде решаю за счет fakeAsync....

По отпискам рекомендую: https://medium.com/ngx/why-do-you-need-unsubscribe-ee0c62b5d21f https://www.youtube.com/watch?v=RhYUnc622qg

Sergei-Sergeevich Автор вопроса
Denis Makarov
По отпискам рекомендую: https://medium.com/ngx/why...

читал но уже давно, перечитаю пожалуй

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Блин, интересно, кто-нибудь когда-нибудь переписывал какую-нибудь игру с x86 на arm? Вообще, такое возможно?
Alan 🔝 Бэброу
12
I just installed it but how do I use it?
Talula
12
здравствуйте, у меня есть число шестнадцаттиричное, FFFB например, это -5, как мне в консоль вывести -5? мой самописный atoi преобразовывает -5 в 65531
Maxim Of course
7
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Карта сайта