【发布时间】:2017-08-28 13:22:05
【问题描述】:
我对 Angular 4 和 Observables 以及与它相关的一切都是新手。
我正在尝试一个接一个地执行两个http 请求(仅当第一个请求成功时)。
我正在使用此代码:
public getCompany(id: string): any {
let company = null;
this.authService.isValidUser().subscribe(response => {
const token = this.tokenStorageService.getTokenFromStorage();
const requestUrl = environment.gatewayUrl + environment.companyService + environment.getCompanyEndPoint + id;
const headers = new Headers();
headers.set('Authorization', 'Bearer ' + token);
const options = new RequestOptions({headers: headers});
return this.http.get(requestUrl, options).catch(this.errorService.handleError);
}, (error: AppError) => {
// ........ //
});
}
这是isValidUser()方法代码:
public isValidUser(): any {
const token = this.tokeStorageService.getTokenFromStorage();
if (!token) {
console.log('cannot find token');
return false;
}
const requestUrl = environment.gatewayUrl + environment.authorizationService + environment.userServiceEndPoint;
const headers = new Headers();
headers.set('Authorization', 'Bearer ' + token);
const options = new RequestOptions({headers: headers});
return this.http.get(requestUrl, options).catch(this.errorService.handleError);
}
这里的想法是只在authService.isValidUser() 代码工作后返回return this.http.get(requestUrl, options).catch(this.errorService.handleError);。
我认为这不是执行此类请求的正确方法,因为我的第二个请求在第一个请求之前已经完成。
也许我错过了如何正确执行此操作的方法?
谢谢。
【问题讨论】:
-
since my first request is already completed before the second one does-- 这就是你想要做的,不是吗?? -
呃,我的错。第二个在第一个完成之前完成
-
在您的代码中,第一个在第二个之前完成...第一个请求的结果是
response。
标签: angular angular2-observables