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

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

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

9 ответов

20 просмотров

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

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...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта