一尘不染

Promises 和 Observables 有什么区别?

javascript

PromiseAngular和Angular有什么区别Observable

每个例子都有助于理解这两种情况。我们可以在什么情况下使用每种情况?


阅读 133

收藏
2022-02-18

共1个答案

一尘不染

A在异步操作完成或失败时Promise处理单个事件。

注意:那里Promise有支持取消的库,但 ES6Promise到目前为止还没有。

可观察的

AnObservable就像 a Stream(在许多语言中)并允许传递零个或多个事件,其中为每个事件调用回调。

通常Observable是首选,Promise因为它提供了Promise更多的功能。如果您想处理 0、1 或多个事件,Observable这并不重要。您可以在每种情况下使用相同的 API。

Observable还有一个优势Promise就是可以取消。如果不再需要对服务器的 HTTP 请求或其他一些昂贵的异步操作的结果,则Subscription允许Observable取消订阅,而Promise即使您不需要通知,最终也会调用成功或失败回调或它提供的结果。

虽然 aPromise立即启动,但Observable仅当您订阅它时才会启动。这就是为什么 Observable 被称为惰性的原因。

Observable 提供类似于数组的运算符,如map, forEach, , …reduce

还有一些功能强大的运算符,例如retry(), or replay(), … 通常非常方便。 rxjs 附带的运算符列表

延迟执行允许在通过订阅执行 observable 之前建立一系列运算符,以进行更具声明性的编程。

2022-02-18