【发布时间】:2017-11-08 09:30:36
【问题描述】:
我想就以下代码获得一些帮助:
fillDataAssociationsArray(DataAssociationIDS: string[]) {
const promise = new Promise((resolve, reject) => {
for (const id of DataAssociationIDS) {
this.api.getDataAssociationByID(id).toPromise().then(
data => {
this.DataAssociations.push(data.body.entities.DATAASSOCIATIONS[0]);
});
}
resolve();
});
return promise;}
在上面的代码中,我尝试将 DataAssociationIDS 数组转换为 DataAssociation 对象,然后将它们推送到 DataObjects[] 的本地数组。我从数组(参数)中获取每个带有 id 的 DataObject,然后对从后端返回正确 DataObject 的 API 执行获取请求。
public getDataAssociationByID(dataAssociationID: string) {
return this.http.get<DataAssociationInterface>(this.apiURL + 'typeOne=DATAASSOCIATIONS&id=' + dataAssociationID,
{ observe: 'response' });}
我想从我的 api 链接一些 HTTP 获取请求,每个请求取决于前一个请求的结果。所以我的想法是对这些请求做出承诺并使用 then() 方法如下:firstRequest().then( SecondRequest().then(...)) 等等。
我的尝试
ngOnInit() {
this.fillDataAssociationsArray(this.extractDataAssociationIdsFromActivities()).then(
() => console.log(this.DataAssociations)
// () => console.log(this.DataAssociations[0].languages.DUT.name)
);}
First result Second line result
then() 块中的第一行打印正确的结果本地数组,但是,当我尝试打印未定义的项目名称的第二行(注释)时?当我链接下一个请求时,它显然也无法读取 undefined。
【问题讨论】:
标签: angular http get es6-promise chaining