【发布时间】:2018-03-04 15:12:57
【问题描述】:
我正在开发一个 Angular(v4) 应用程序。与任何其他 Web 应用程序一样,此应用程序也有 HTTP 请求,对于每个请求,我都有一个订阅以获取数据并在 UI 上显示它们。我一直在阅读async 管道的使用以及为什么它比subscribe 更好。根据我的阅读,它肯定比普通的subscribe 方法有好处,我相信我应该在我的应用程序中使用它,但我不确定如何使用这个aync 管道而不是subscribe 来构建我的应用程序。让我发布我的应用程序的结构:
我有一个向后端发出Http 请求的服务层,类似于:
some-service.component.ts
@Injectable()
export class SomeService {
constructor(private http: HttpClient) {
}
getSomething() {
return this.http.get(`${this.baseUrl}/${'test'}`);
}
}
上述服务为我的组件提供了一个 Observable,我通常会订阅它,如下所示:
一些组件.ts
@Component({
selector: 'some-app',
templateUrl: './some.component.html',
styleUrls: []
})
export class SomeComponent {
constructor(private someService: SomeService) {
}
getSomething() {
this.someService
.getSomething()
.subscribe(
// the first argument is a function which runs on success
(data) => {
// DO SOME DATA TRANSFORMATION HERE
},
// the second argument is a function which runs on error
(err: HttpErrorResponse) => {
this.exceptionService.errorResponse(err);
},
// the third argument is a function which runs on completion
() => {
// MAKE SOME FUNCTION CALL
}
);
}
}
以上是我如何订阅一般HTTP 响应的一般结构。我想摆脱这个subscribe 并改用async。但是,我的问题是,我在收到数据时会做一些data transformation(如上所示)或有时I make some function call from thecompletionobserver(如上所示),并且通过这样的操作,我不确定我将如何这些操作一旦切换到async。
我想,对于数据转换,我可以在我的服务中完成(虽然不确定),但我如何才能像现在这样进行函数调用。
任何意见将不胜感激。如果我的问题需要更多说明,请告诉我。谢谢!
【问题讨论】:
标签: angular typescript rxjs observable