我正在使用角度的http嵌套調用。Angular4 - 嵌套的Http調用
首先調用來獲取令牌。 秒調用將使用令牌並返回實際數據。
public get(api) {
return this.http.get(this.url + '/token')
.map(res => res.json())
.toPromise()
.then((data: any) => {
this.access_token = data.access_token
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + this.access_token);
return this.http.get(this.url + api, {
headers: headers
}).map(res => res.json());
})
}
該函數返回Promise<Observable<any>>
。如何解析響應,以便我可以從訂閱中的嵌套調用中獲取數據。
this.get('me/profile')
.subscribe(data => {
console.log(data);
});
嘗試刪除'.toPromise()'。這應該返回一個'Observable'。我建議你使用type('Class')來映射數據,以便結果是對象而不是JSON字符串。像Java一樣。 –
要麼與承諾一致(從回調中返回一個承諾)或者觀察者(第二次調用的平面圖)。混合是災難的祕訣。 – jonrsharpe
您正在混合處理異步數據的兩種不同方法,這些方法本身就是非常糟糕的。要麼產生Promise Chaining來獲取數據,請使用.then或者將轉換轉換爲get函數返回的promise。 –