Должен ли я всегда использовать Observables, где можно использовать обещание? - PullRequest
3 голосов
/ 10 октября 2019

Вчера я опубликовал вопрос о переполнении стека, где спросил пользователя, есть ли способ дождаться результата асинхронной операции без явного использования ключевых слов async и await. Причина в том, что мне нужно было дождаться завершения операции, чтобы я мог использовать возвращаемое значение до того, как другие HTTP-запросы могут быть запущены. Оказывается, это было связано с использованием наблюдаемых для подписки на результат операции, а затем с использованием mergeMap для продолжения выполнения других запросов.

Я также прочитал на днях статью, в которой говорится, чтомногие разработчики JS / RxJs / Angular «злоупотребляли» наблюдаемыми, используя их для каждой возможной асинхронной операции, даже когда возвращалось только одно значение. В статье говорится, что в данном конкретном случае обещания были бы более подходящими, поскольку наблюдаемые были сочтены излишними.

Это заставляет меня задуматься, есть ли какие-то конкретные сценарии или причины, по которым мне следует использовать обещания вместо наблюдаемых. По моему собственному мнению, наблюдаемые предлагают гораздо больший контроль над асинхронной операцией, а также предоставляют гораздо большую функциональность за счет использования разрешенных операторов, предоставляемых RxJS. Это, в сочетании с тем фактом, что асинхронные операции, которые возвращают только одно значение, все еще могут также обрабатываться Observables (так как они являются просто потоком, который имеет только одно значение), заставляет меня думать, что в действительности нет конкретногоscernario, где я бы хотел использовать обещание вместо наблюдаемого. Существует ли такой сценарий?

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

1 Ответ

2 голосов
/ 10 октября 2019

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

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

Служба Angular http может использовать обещания, поскольку http запрос является пожаром и может получить сценарий с одним ответом, а не потоком, но наблюдаемое все еще имеет смысл в этом случае.

Я быутверждают, что зачем вводить обещания в приложение реактивного программирования, когда у нас уже есть наблюдаемые для асинхронных операций.

Я на 100% убежден, что разработчики Angular определенно не злоупотребляют наблюдаемыми в том случае, когда обещание может использоваться,Использование единого асинхронного стиля более согласованно, чем стиль смешивания и сопоставления, а также позволяет реорганизовать его позднее, когда ваш http-запрос станет потоком.

...