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

Всем привет, скажите, пож-та, лучшие практики, когда следует использовать toPromise()

у Observable? Например, мне часто удобнее преобразовать Observable в промис, а затем выполнить обработку эвента в then(), нежели подписку создавать через .subscribe (притом ее еще финализировать как-то надо) - правильно ли это?

19 ответов

21 просмотр
Michael-Pokrovsky Автор вопроса

Объясните почему пож-та

Для ангуляр есть одно место где 200% нужен промис это когда провайдится APP_INITIALIZER

Michael Pokrovsky
Объясните почему пож-та

Промис и обсервабл - это разные инструменты

Michael Pokrovsky
Объясните почему пож-та

Если вкратце, то если не отменять Promise или не отписываться от Observble, то это дает потенциальную возможность появления негативных эффектов, утечек и т.д. В этом докладе можно посмотреть подробнее: https://t.me/angular_fox/319

Hey 👋, i'm 𝖙𝖍𝖊𝖐𝖎𝖇𝖆! キバ
Если вкратце, то если не отменять Promise или не о...

А что мешает преобразовать обзервбл в промис, а затем отписаться от него? Только не совсем понятно в чем заключается "удобство" и почему сразу не использовать значение из обсервабл...

Pavel
А что мешает преобразовать обзервбл в промис, а за...

Не понял первый вопрос. Удобство заключается в том, что отменить Promise гораздо сложнее, чем Observable. Если мы хотим отменить Promise, то необходимо реализовывать поддержку на уровне кода, пробрасывать и правильно обрабатывать Cancellation Token. Если мы хотим отменить Observable, то достаточно просто отписаться. Поэтому Observable, в отличии от Promise, дает очень удобную абстракцию для отмены потоков. Кроме того, rxjs предоставляет множество готовых и полехных операторов, которые всегда пригождаются.

Michael-Pokrovsky Автор вопроса
Hey 👋, i'm 𝖙𝖍𝖊𝖐𝖎𝖇𝖆! キバ
Не понял первый вопрос. Удобство заключается в то...

спасибо даже в случае с посылкой запроса через http-сервис с однократной обработкой ответа промисы лучше не использовать?

Michael Pokrovsky
спасибо даже в случае с посылкой запроса через htt...

а зачем Вы хотите их использовать? Просто это даже с точки зрения кода будет сложнее, где то - observable, где то - promise

Michael-Pokrovsky Автор вопроса
Oleg Safonov
а зачем Вы хотите их использовать? Просто это даже...

мне просто казалось удобнее сделать toPromise, а потом работать с than() и catch()

Michael Pokrovsky
мне просто казалось удобнее сделать toPromise, а п...

ну в этом случае просто будет неконсистентное api у Ваших сервисов, где то поток, где то - promise. Не думаю, что than \ catch сильно удобнее будет)

Michael-Pokrovsky Автор вопроса
Alexander
А в чем конкретно удобство?

ну я думал, что подписку освобождать нужно обязательно, а промис не требует этого думал, что когда компонент будет уничтожен промис перейдёт в состояние либо redjected, либо fulfilled

Michael Pokrovsky
ну я думал, что подписку освобождать нужно обязате...

на самом деле promise вероятно всегда выполнится, даже если компонент уничтожен, нет?

Michael-Pokrovsky Автор вопроса
Alexander
Не перейдет

понятно, просто будет висеть в памяти?

Michael Pokrovsky
понятно, просто будет висеть в памяти?

Ну тут непонятно. Не могу придумать кейсов когда промис реально не завершится, но говорят такие есть

Michael-Pokrovsky Автор вопроса
Michael Pokrovsky
toPromise вообще deprecated оказался

😱, еадо срочно старые проекты обновить...

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

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

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
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта