是否有任何情况,与可观察的相比,承诺更强大?我知道可观察的许多好处而非承诺。但无论如何,我应该只使用对可观察者的承诺。
我找到了这个链接promises vs obserbales。但这总是向我展示了可观察性对承诺的好处。我想知道承诺对可观察物的好处。
答案 0 :(得分:4)
使用Promise 代替Observable,时间为:
使用Observable 代替Promise,时间为:
通常,Observable模式是一个扩展的Promise模式,具有更多的工具和功能。由您决定是否使用Promises来限制代码。它首先是一个自定义库,然后被包含在ES2016中。
此外,我建议使用特定问题参数研究问题:您需要更快的应用程序吗?您将使用旧版模块吗?
答案 1 :(得分:4)
一个观察者做了承诺所做的一切,甚至更多。如果需要承诺,可以使用toPromise()
方法将其切换为承诺。
如果
,则必须选择一个可观察的Observable.from(...)
安全结构来统一可观察和承诺如果使用的代码仅使用可观察的代码,则可以选择 作为。
如果使用它的API需要承诺并且不使用Observable.from(...)
安全结构,则可以在可观察的情况下选择承诺必须
如果
,可以选择承诺可以async
函数)let observable = ...; observable.subscribe(...); return observable
中被破坏(这也需要跟踪多个订阅以防止observable被取消)< / LI>
答案 2 :(得分:2)
可观察者是懒惰的->在我们订阅可观察者之前,什么也不会发生。 通过取消订阅可观察的对象可以随时取消以进行内存清理。 承诺只能有一个响应,但可观察到的可以有多个响应。
match
仅打印一个 在可观察中:
const promSingle = new Promise(resolve){
resolve('a');
resolve('b');
}
promSingle.then(value => {
console.log(value)
})
const obSerMult = new Observable(observable){
Observable.next('a');
Observable.next('b');
Observable.next('c');
Observable.next('d');
}
obSerMult.subscribe(value => {
console.log(value);
})
答案 3 :(得分:0)
来自:Randall Koutnik的书“使用RxJS构建反应性网站”。
可观察对象就像数组,它们表示事件的集合,但是也像承诺一样,它们是异步的:集合中的每个事件在将来都会到达不确定的位置。这与承诺(例如Promise.all)的集合不同,可观察对象可以处理任意数量的事件,而承诺只能跟踪一件事情。可观察对象可用于为按钮的点击建模。它代表了应用程序整个生命周期内发生的所有点击,但是这些点击将在我们无法预测的将来的某个时刻发生。
答案 4 :(得分:0)
承诺很热衷,因此请在希望任何事情发生而无需任何触发的情况下使用它们。 而 Observable 是懒惰的,可用于执行需要来自输入或其他某些触发的事情,并且不需要在应用加载后立即发生
答案 5 :(得分:0)
看看这篇文章: https://scholarbasta.com/promises-vs-observables/
承诺在以下情况下使用,
在以下情况下使用 observable: