在下面的服務方法中,我使用Promise.all將兩個並行查詢傳遞給服務器。結果被返回並存儲在productCategoryData數組中。這個數組被記錄到控制檯並且數據被驗證。訪問由Promise.all
服務方法然後
public getProductCategoryData() {
var productCategoryData = [];
return Promise.all([this.http.get(this.specialValueUrl),
this.http.get(this.applianceBrandUrl)])
.then(function(responses) {
responses[0].toPromise().
then(response => {
let specialvalues: SpecialValue[] = response.json();
productCategoryData[0] = specialvalues;
// console.log(specialvalues)
});
responses[1].toPromise().
then(response => {
let applianceBrands: ApplianceBrand[] = response.json();
productCategoryData[1] = applianceBrands;
// console.log(applianceBrands)
});
return productCategoryData;
})
}
的productCategoryData數組傳遞到其被再次記錄到控制檯的組件。然後,將productCategoryData數組的數據分配給組件中定義的兩個數組:this.specialValues和this.applianceBrands。但是它們在登錄到控制檯時未定義。我期望這些數組有數據。
組件的方法:
private getProductCategoryData() {
this.productCategoryService.getProductCategoryData()
.then(productCategoryData => {
this.specialValues = productCategoryData[0];
this.applianceBrands = productCategoryData[1];
console.log('productCategory.Data = ', productCategoryData) //has data
console.log('this.specialValues = ', this.specialValues) //undefined
console.log('this.applianceBrands = ', this.applianceBrands) //undefined
});
}
這是AngularJS(角1.x版)或角(角V2 +)?如果AngularJS,請將標籤更改爲'angularjs'。 – DeborahK
這是角2 – koque
好吧,所以我假設你的意思是「組件」方法而不是「控制器」方法?是否有可能在這裏使用Observables而不是Promises? – DeborahK