我在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,检索数据并将其分配给组件中的特定变量。 –