jQuery.ajax()访问javascript循环中的beforeEnd局部变量

jQuery .ajax() access to beforeSend local variable in javascript loop

本文关键字:beforeEnd 局部变量 循环 javascript ajax 访问 jQuery      更新时间:2023-09-26


我在for javascript循环中有一个jQuery ajax Get调用
这里的代码:

    var number_of_ping_for_average = 4;
var ping_start_time;
    for(i = 0; i++; i < number_of_ping_for_average){
                $.ajax({
                    type: 'GET',
                    url: "http://www.exmple.com/pkt.ext",
                    timeout: 1000,
                    cache: false,
                    beforeSend: function(){
                        ping_start_time[i][new Date().getTime()];
                    },
                    success: function (data) {
                        var ping_arrive_time = new Date().getTime();
                        var ping_val = ping_arrive_time - ping_start_time[i];
                    },
                    error: function(data){
                        //timeout or 500 error
                        //@TODO fare funzionare tutto
                    }
                });
            }

正如你所看到的。。。我需要在匿名函数中调用变量"i"。。。但不起作用
请记住,ping_start_time必须包含3个不同的同时值!

为Ajax调用创建一个单独的函数,它应该可以工作,创建一个独立的函数可以确保i的值不会在该范围内更改。

  var number_of_ping_for_average = 4;
    var ping_start_time=[];
    function callsAjax(i){
        $.ajax({
        type: 'GET',
        url: "http://www.exmple.com/pkt.ext",
        timeout: 1000,
        cache: false,
        beforeSend: function(){
          ping_start_time[i][new Date().getTime()];
         },
        success: function (data) {
          var ping_arrive_time = new Date().getTime();
          var ping_val = ping_arrive_time - ping_start_time[i];
         },
         error: function(data){
           //timeout or 500 error
          //@TODO fare funzionare tutto
         }
      });
    }
    for(i = 0;i < number_of_ping_for_average;i++){
        callsAjax(i)                    
    }

实现这一点的最佳方法是使用包装器
例如

(function (){
 console.log("test n." + i);
})(i)

非常感谢!