這是我的一個堆疊http.get代碼,檢索一個對象,然後將對象的詳細信息:Angular2的Rx - 疊http.get()返回太早
getDetails(sysID:string){
console.log("entered getDetails");
var details;
this.http.get('https://blahURL').map(res => res.json()).subscribe(
(data) => details = data, // Reach here if res.status >= 200 && <= 299
(err) => console.log(err), // Reach here if fails
()==>{ // On completion
console.log("reached end of first get");
this.http.get(...).map(res2 => res2.json()).subscribe(
(data2) => {return data2;
...
這是通過console.log(getDetails(sysID));
調用。所以我期望的是,當第二個this.http.get()收到一個結果時,它被傳遞給調用者並打印在控制檯中。 然而,我所得到的控制檯: entered getDetails
然後undefined
,只有經過reached end of first get
我怎麼會迫使它等待第二http.get結果?
可能重複的[如何在Angular2中鏈接Http調用](https://stackoverflow.com/questions/34104638/how-to-chain-http- calls-in-angular2) – Vega
HTTP請求是異步的。您最外面的'console.log'調用將始終輸出'undefined'。 – cartant
考慮使用ForkJoin –