我是否需要取消订阅“可观测对象”?

时间:2020-02-15 06:56:47

标签: angular rxjs

enter image description here

我是否需要退订上述任何可观察项? take(1)真正做什么?最后,您如何在这种情况下使用async-await? (使用async-await更好吗?)

Angular的新手。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

您是否需要take(1)取决于getPassengersByBid的工作。如果此方法返回的Observable仅发出一个项目然后完成,则您无需使用take(1),因为它本身就可以完成。例如,httpClient.get()产生一个next和一个complete,因此您不需要将其与take(1)链接。

如果getPassengersByBid是一个永远无法完成的无限可观察量,那么如果您只想要一个值,则可以使用take(1)

第二件事是您不需要将Observables与Promise一起包装,而只能使用toPromise()。但是,请注意,使用toPromise()的源Observable必须完成,并且Promise将使用最新的值进行解析(但是如果您使用take(1),则将具有与您所拥有的相同的行为即使使用可发射多个项目的Observables也是如此。