在任何情况下,与 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/