异步/等待或可观察的角度

时间:2018-12-06 16:12:12

标签: angular async-await

应该使用哪种async / await或Observable来调用Angular上的后端服务?

使用异步/等待使查看源代码更加容易,因此我想使用异步/等待。在那种情况下,我认为它可以与Observable#toPromise一起使用。

但是,Angular的手册仅显示使用Obseravable的示例,所以我应该使用Observable吗?

2 个答案:

答案 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 更有意义。