【问题标题】:fetch request in for loop only returns data from last iterationfor 循环中的获取请求仅返回上次迭代的数据
【发布时间】:2023-01-08 00:41:32
【问题描述】:

我正在发出 14 个获取请求,每次迭代循环中的“日期”都会发生变化。 所以我应该为每个特定日期打印获取的数据。

该程序仅打印循环中可能的最后日期的数据。

删除“setTimeout()”会导致 429 错误。但有些日志不是最后一个。删除它可以消除错误,但数据都是最后日期的。

for(i=0; i<14; i++){

        // update current_date 

        setTimeout(()=>{
            var date_url = 'url_and_params' + current_date + 'rest_of_url';
            fetch(date_url)
            .then(response => {
                return response.json()     
            }).then(data=>{

                console.log(data[0].stat1);
                data1.push(data[0].stat2);
    
            })
        },5)
        
    }

【问题讨论】:

    标签: json request fetch


    【解决方案1】:

    我认为问题是当前日期实际上并没有更新,一旦你用当前日期初始化它,它就会保持不变并且永远不会更新,你需要在每次迭代时重置当前日期,我不知道你是怎么得到的日期所以我在那里留下了评论,希望它有帮助,如果有效请告诉我!保重,美好的一天

    for(i=0; i<14; i++){
    
            // update current_date 
    
            setTimeout(()=>{
    
                current_date = //get the current date each iteration
    
                var date_url = 'url_and_params' + current_date + 'rest_of_url';
                fetch(date_url)
                .then(response => {
                    return response.json()     
                }).then(data=>{
    
                    console.log(data[0].stat1);
                    data1.push(data[0].stat2);
        
                })
            },5)
            
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2016-11-12
      • 2013-12-14
      • 2012-10-27
      相关资源
      最近更新 更多