我正在使用 Angular 2,我想知道是否有人可以解释何时将 Observable 转换为承诺是有益的情况?
前任。 Rx.Observable.toPromise()
我知道承诺和可观察性之间的区别。同样,我只是好奇toPromise()
操作员会在什么情况下派上用场。
谢谢:)
显而易见的情况是,当您被强加一个 API 时,该 API 仅与承诺接口,该 API 的一些输入作为可观察量获得。如果满足所有这些条件,那么您必须将可观察量转换为承诺。
您如何获得仅代表一个值的可观察量,或者您只关心最后一个值?嗯,同样的事情。您的可观察量可能由强加的 API 返回,该 API 仅与可观察量等接口。
因此,使用 .toPromise
的主要原因是当您实际上别无选择并且必须转换时。
A 承诺只触发一次。因此,将可观察量转换为承诺的第一个要求是可观察量只发出一次(或者你只关心第一次发射)。
promise API 比可观察量更简单——基本上只是then
和catch
,它很容易从这些分支中挂起额外的then
分支,而对于可观察量,你必须订阅,然后可能担心取消订阅。
您可能还具有带有期望承诺的下游代码,因此正如另一个答案所述,您需要转换为承诺才能与之交互。