Вчера я опубликовал вопрос о переполнении стека, где спросил пользователя, есть ли способ дождаться результата асинхронной операции без явного использования ключевых слов async
и await
. Причина в том, что мне нужно было дождаться завершения операции, чтобы я мог использовать возвращаемое значение до того, как другие HTTP-запросы могут быть запущены. Оказывается, это было связано с использованием наблюдаемых для подписки на результат операции, а затем с использованием mergeMap для продолжения выполнения других запросов.
Я также прочитал на днях статью, в которой говорится, чтомногие разработчики JS / RxJs / Angular «злоупотребляли» наблюдаемыми, используя их для каждой возможной асинхронной операции, даже когда возвращалось только одно значение. В статье говорится, что в данном конкретном случае обещания были бы более подходящими, поскольку наблюдаемые были сочтены излишними.
Это заставляет меня задуматься, есть ли какие-то конкретные сценарии или причины, по которым мне следует использовать обещания вместо наблюдаемых. По моему собственному мнению, наблюдаемые предлагают гораздо больший контроль над асинхронной операцией, а также предоставляют гораздо большую функциональность за счет использования разрешенных операторов, предоставляемых RxJS. Это, в сочетании с тем фактом, что асинхронные операции, которые возвращают только одно значение, все еще могут также обрабатываться Observables (так как они являются просто потоком, который имеет только одно значение), заставляет меня думать, что в действительности нет конкретногоscernario, где я бы хотел использовать обещание вместо наблюдаемого. Существует ли такой сценарий?
Я надеюсь, что этот вопрос не слишком субъективен, так как преимущества и недостатки или обещания и наблюдаемые являются объективными свойствами двух программных конструкций. Надеюсь, я не увижу этот вопрос закрытым.