у Observable? Например, мне часто удобнее преобразовать Observable в промис, а затем выполнить обработку эвента в then(), нежели подписку создавать через .subscribe (притом ее еще финализировать как-то надо) - правильно ли это?
Объясните почему пож-та
Для ангуляр есть одно место где 200% нужен промис это когда провайдится APP_INITIALIZER
Промис и обсервабл - это разные инструменты
Если вкратце, то если не отменять Promise или не отписываться от Observble, то это дает потенциальную возможность появления негативных эффектов, утечек и т.д. В этом докладе можно посмотреть подробнее: https://t.me/angular_fox/319
А что мешает преобразовать обзервбл в промис, а затем отписаться от него? Только не совсем понятно в чем заключается "удобство" и почему сразу не использовать значение из обсервабл...
Не понял первый вопрос. Удобство заключается в том, что отменить Promise гораздо сложнее, чем Observable. Если мы хотим отменить Promise, то необходимо реализовывать поддержку на уровне кода, пробрасывать и правильно обрабатывать Cancellation Token. Если мы хотим отменить Observable, то достаточно просто отписаться. Поэтому Observable, в отличии от Promise, дает очень удобную абстракцию для отмены потоков. Кроме того, rxjs предоставляет множество готовых и полехных операторов, которые всегда пригождаются.
спасибо даже в случае с посылкой запроса через http-сервис с однократной обработкой ответа промисы лучше не использовать?
а зачем Вы хотите их использовать? Просто это даже с точки зрения кода будет сложнее, где то - observable, где то - promise
мне просто казалось удобнее сделать toPromise, а потом работать с than() и catch()
А в чем конкретно удобство?
ну в этом случае просто будет неконсистентное api у Ваших сервисов, где то поток, где то - promise. Не думаю, что than \ catch сильно удобнее будет)
ну я думал, что подписку освобождать нужно обязательно, а промис не требует этого думал, что когда компонент будет уничтожен промис перейдёт в состояние либо redjected, либо fulfilled
на самом деле promise вероятно всегда выполнится, даже если компонент уничтожен, нет?
понятно, просто будет висеть в памяти?
Ну тут непонятно. Не могу придумать кейсов когда промис реально не завершится, но говорят такие есть
toPromise вообще deprecated оказался
😱, еадо срочно старые проекты обновить...
Обсуждают сегодня