应该使用哪种async / await或Observable来调用Angular上的后端服务?
使用异步/等待使查看源代码更加容易,因此我想使用异步/等待。在那种情况下,我认为它可以与Observable#toPromise一起使用。
但是,Angular的手册仅显示使用Obseravable的示例,所以我应该使用Observable吗?
答案 0 :(得分:0)
根据Angular文档,您应该使用Observable。
可观察对象为发布者之间传递消息提供了支持 和您的应用程序中的订阅者。可观察物提供了重要的 优于其他事件处理技术(异步) 编程,并处理多个值。
来源:https://angular.io/guide/observables
上面引用的第二句话是关键,特别是提到“其他技术”,即承诺。
此外,不难发现http响应的值(源代码)。实际上,一旦订阅了Observable,就可以访问这些值。
something.service.ts
...
public getSomething(): Observable<HttpResponse> {
return this._http.get<HttpResponse>('/api/something');
}
...
something.component.ts
...
public getSomethingMethod() {
this._somethingService.getSomething()
.subscribe((res: HttpResponse ) => {
// Do something with res (values are now visible)
})
}
...
答案 1 :(得分:0)
IMO可观察对象比JavaScript承诺更难处理,首先是因为它们在javascript语法中没有第一级支持(没有异步/等待和尝试/捕获它们),其次您需要记住取消订阅。
我同意通过承诺提高代码的可读性。
对于您只希望发生一个事件或一个失败而不是多个失败的情况,从概念上讲,一个承诺比一个可观察到的事件流 s 更有意义。