首页 > 解决方案 > 通过 Angular/TypeScript 中的 HTTP-Get-Request 循环使用不同的值

问题描述

问题已解决

source:Protocols[] = [];

var lengthArray = 6
var arrayid = [2, 6, 1, 3, 4, 5];

for (let i = 0; i <= lengthArray-1; i++) {
    let urlstring: string = '.../display/'  + arrayid[i]    + '/protocols';

  this.httpClient.get<Protocols[]>(urlstring)
  .subscribe(protocols => {
    for (const item of protocols) {
      this.source.push({Id: item['Id']});
    }
    console.log(arrayid[i], this.source);
----->        this.source = []
  });
}

我想使用 http-get-request 遍历一个 url,以根据 arrayid 获得不同的响应。我的问题是响应重叠并且与邮递员不同。我的假设是,“this.source”中的值是连续的并且不会被重置。有什么技巧可以解决这个问题吗?

谢谢!

source:Protocols[] = [];

var lengthArray = 6
var arrayid = [2, 6, 1, 3, 4, 5];

for (let i = 0; i <= lengthArray-1; i++) {
    let urlstring: string = '.../display/'  + arrayid[i]    + '/protocols';

  this.httpClient.get<Protocols[]>(urlstring)
  .subscribe(protocols => {
    for (const item of protocols) {
      this.source.push({Id: item['Id']});
    }
    console.log(arrayid[i], this.source);
  });
}
 

对于我收到的每个数组值(2、6、1、3、4、5):

0: {Id: 13}
1: {Id: 14}
2: {Id: 15}
3: {Id: 19}
4: {Id: 20}
5: {Id: 21}
6: {Id: 28}
7: {Id: 28}
8: {Id: 29}
9: {Id: 29}
.....
length: 169

当我删除for循环并手动更改arrayid编号时,值就像邮递员一样:

对于数组值 2:

0: {Id: 155}
1: {Id: 156}
2: {Id: 157}
3: {Id: 154}
length: 4

对于数组值 6 :

empty because there is no value
length: 0

对于数组值 1 :

0: {Id: 13}
1: {Id: 14}
2: {Id: 15}
3: {Id: 19}
4: {Id: 20}
5: {Id: 21}
6: {Id: 28}
7: {Id: 28}
8: {Id: 29}
9: {Id: 29}
.....
length: 162

对于数组值 3:

empty because there is no value
length: 0

对于数组值 4 :

empty because there is no value
length: 0

对于数组值 5 :

0: {Id: 158}
1: {Id: 159}
2: {Id: 174}
length: 3

标签: angulartypescript

解决方案


推荐阅读