我有一个jQuery ajax在一个javascript周期内调用
这里的代码:
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
}
});
}
如你所见......我需要调用变量&#34; i&#34;在匿名函数内...但不能工作 请记住,ping_start_time必须包含3个不同的同时值!
答案 0 :(得分:2)
为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)
}
答案 1 :(得分:2)
最好的方法是使用包装纸
例如
(function (){
console.log("test n." + i);
})(i)
非常感谢!