我在Angular2項目中有一個服務,它接受一些參數並返回一個值列表來填充窗體上的下拉菜單。當表單組件初始化時,我需要用不同的參數多次調用相同的服務來定義多個不同的下拉菜單,但是如果我將它們全部調用,最後一個調用clobbers先前的調用,可能是因爲後續調用覆蓋或取消以前的提取。一個接一個地調用Angular2函數
我已經把每個調用分成了它們自己的函數,但是我需要一種方法來調用每個函數的串行方式,這樣第二個函數纔會在第一個函數完成之後才被調用。每個函數都可以獨立工作,但是如果我調用多個函數,只有最後一個調用成功,並且第一個失敗並返回錯誤(因爲服務本身在完成前使用新參數調用時會終止當前提取)。
this.fetchValueListOne();
this.fetchValueListTwo();
this.fetchValueListThree();
我試圖與承諾這項工作,但與具有傳遞我想進入到功能服務很快作用域地獄,然後捲起不能夠得到所產生的數據備份出來再次 - 每個服務調用需要三個參數,然後設置組件中定義的特定的this.valueList []變量,並在窗體上使用。
我也嘗試創建一個函數列表作爲變量,然後遍歷它們,但是我遇到了同承諾一樣的範圍問題。
該服務返回一個Observable,該函數訂閱該Observable,檢索數據並將其分配給組件中的下拉值列表綁定到的數組變量。
的功能是這樣的:
fetchValueListOne() {
this.dataSvc.getValueList('Val-List-One', this.stateSvc.currentContext, this.stateSvc.currentLanguageCode)
.map(response => response.json())
.subscribe(
data => {
this.valListOne = data;
},
err => console.log('Error', err),
() => {
console.log('this.valListOne', this.valListOne);
}
);
}
這三個函數返回promise或observables? –
服務返回Observable,這些函數訂閱Observable,檢索數據並將其分配給組件中的特定變量。 –