【发布时间】:2020-02-07 16:54:55
【问题描述】:
我昨天发布了一个关于堆栈溢出的问题,我问用户群是否有一种方法可以在不显式使用 async 和 await 关键字的情况下等待异步操作的结果。原因是我需要等待操作完成,以便在触发任何其他 HTTP 请求之前使用返回的值。事实证明,它涉及使用 observables 订阅操作结果,然后使用 mergeMap 继续处理其他请求。
前几天我还阅读了一篇文章,其中概述了许多 JS/RxJs/Angular 开发人员通过在每个可能的异步操作中使用它们来“滥用”可观察对象,即使只返回一个值。文章概述了在这种特殊情况下,promise 会更合适,因为 observables 被认为是矫枉过正。
这让我想知道是否有任何特定的场景或原因我应该使用 Promise 而不是 observables。在我自己看来,observables 对异步操作提供了更好的控制,并且通过使用 RxJS 提供的 let-able 操作符提供了更多的功能。再加上仅返回单个值的异步操作仍然可以由 Observables 处理(因为它们只是一个只有单个值的流),这让我认为确实没有特定的我曾经想在可观察对象上使用承诺的场景。这样的场景存在吗?
我希望这个问题不要太主观,因为优点和缺点或承诺和可观察性都是这两种编程结构的客观属性。所以希望我不应该看到这个问题结束。
【问题讨论】:
-
这取决于您的需求。你应该决定何时使用 promises 或 observables。看到这个线程:stackoverflow.com/questions/37364973/…
标签: javascript promise rxjs observable