Angular:通过循环将数据发布到表中,并在将循环的i发布到表中时出现问题

问题描述 投票:-1回答:1

早安,

我正在尝试将数据与Tour_id和每个单独的media_id(我从其他地方获取的station_id)一起放入表中,订单号让我很头疼:我正在尝试为每个站点为我发布的每种媒体分配一个编号。

例如:站1有2种媒体站点2有3

然后,odernumbers应该像这样:0,0,1,1,1,1

目前我正在使用以下代码:

for(var i = 0; i < this.currentStations.length; i++){
              this.http.get("http://localhost:3000/mediasforstation/" + this.currentStations[i].id).subscribe((res) => {
                medias = res;

                for (var j = 0; j < medias.length; j++){
                  this.http.post("http://localhost:3000/posttourstations",
                  {"tour_id": id,  "media_id": medias[j].id, "ordernumber": i}).subscribe(function(res) {
                    console.log(res);
                  }.bind(this));
                }
              });
            }

一切正常,但订单号有效,但是订单号始终占用所涉及的站点数,在我们上面的示例中为2。

我该如何解决?

非常感谢您的帮助。

mysql angular loops post indexing
1个回答
0
投票

据我了解,您需要保留索引值。变量i的类型为var,即function scoped。在外部循环中,您正在调用一个返回一些响应的API,同时i的值已更新,并且对于下一个索引/计数器,该API调用已发送。当您从API调用获得响应时,您将获得调用了外部循环的i的值。

换句话说,您需要了解varlet之间的区别。您的问题可以通过替换

解决
     for(var i=0;...)

with

     for(let i=0;...)

这里为您提供示例代码。

     //block scoped - retains value of i
     for (let i=0;i<10;i++){
        this.http.get('https://jsonplaceholder.typicode.com/users').subscribe(res=>{
        for(var j=0;j<5;j++){
            console.log(`i=>${i}`)
        }
       })
      }

     //function scoped - gets updated value of i
     for (var i=0;i<10;i++){
        http.get('https://jsonplaceholder.typicode.com/users').subscribe(res=>{
        for(var j=0;j<5;j++){
           console.log(`i=>${i}`)
        }
      })

    }
© www.soinside.com 2019 - 2024. All rights reserved.