angular - 什么时候使用 Promise 而不是 observable?

标签 angular ecmascript-6 promise rxjs observable

在任何情况下,与 observable 相比,Promise 是否更强大?我知道 observables 比 promises 有很多好处。但是在任何情况下,我应该只使用 promises 而不是 observables。

我找到了这个链接,promises vs observables .但这总是向我展示可观察对象优于 promise 的好处。我想知道 promise 相对于 observables 的好处。

最佳答案

Observable 可以完成 promise 所做的一切,甚至更多。如果需要 promise ,则始终可以使用 toPromise() 方法将其切换为 promise 。

如果

  • 可观察对象固有的任何特性,而不是 promise ,并在 related question 中详细解释有需求(特别是取消订阅、不完整的可观察对象和接收多个值的可观察对象)
  • 使用它的 API 需要一个 observable 并且不使用 Observable.from(...) 安全结构来统一 observable 和 promises

如果使用可观察对象的代码专门使用可观察对象,则可以选择可观察对象而不是 promise 。

如果使用 promise 的 API 期望一个 promise 并且不使用 Observable.from(...) 安全结构,则 必须 选择 promise 而不是 observable。

一个 promise 可以被选择而不是一个可观察的如果

  • 使用它的代码专门使用 promises(特别是 async 函数)
  • 它需要设计成异步的
  • 它需要立即订阅并链接然后,因为链应该在可观察对象中断开 let observable = ...; observable.subscribe(...);返回 observable(这还需要跟踪多个订阅,以防 observable 可取消)

关于angular - 什么时候使用 Promise 而不是 observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269671/

相关文章:

javascript - 进行 DomSanitizer API 调用时不使用基本属性?

javascript - 将对象数组中两个属性的唯一值存储到单个数组中

node.js - 有前途的多党制

javascript - 如何使用MongoClient而不需要每次都编码 "client.close()"?

angular - 节点 + Angular 通用 SSR : how to set the device-width when rendering a page

Angular @ContentChildren 不适用于 <ng-template>

javascript - IE11 中的 TypeScript Array.from

javascript - 如何确保我使用最新的 Promise()

java - 所需的请求部分 'file' 不存在。尝试上传图像, Angular -> Spring

javascript - 嵌套对象和数组解构