我對Angular 4和Observables
以及與它相關的所有東西都很陌生。 我試圖一個接一個地執行兩個http
請求(只有時第一個成功)。Angular(4):帶有Observable的多個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);
}
的這裏的想法是隻返回return this.http.get(requestUrl, options).catch(this.errorService.handleError);
的authService.isValidUser()
代碼工作後。
我不認爲這是執行此類請求的正確方式,因爲我的第二個請求在第一個請求之前已經完成。
也許我錯過了如何正確使用它的一些方法?
謝謝。
'因爲我的第一個請求已經完成之前,第二個'' - 這是你正在嘗試做什麼,不是嗎? – TheUnreal
呃我的錯。第二個在第一個請求完成之前完成 –
在您的代碼中,第一個在第二個之前完成...第一個請求的結果是「響應」。 – TheUnreal