我有一个包含多个值的变量(对象)。
对于这些值中的每一个,我使用" post"执行AJAX。和"完成"方法如下。
你能帮我理解变量" counter"在循环中很好地递增(第一个console.log显示,1,2,3,4 ......)。
但是当循环结束时,第二个" console.log" show" counter"在0?我错过了什么吗?
$('.confirm_suppression').on('click',function(){
var counter = '0';
$.each(row_to_delete, function(data){
$.post(
"/mysql/function_manager.php",
{
'type_request' : 'remove_user_from_host',
'user_id' : iduser,
'host_id' : row_to_delete[data].id
},
"json"
).done(function(data) {
var array = JSON.parse(data);
if(array.status == 'OK'){
++counter;
console.log('value counter in loop : ' + counter);
$('#dialogboxhead').val('in progress');
};
if(array.status == 'KO'){
alert(array.msg);
};
});
});
console.log('value counter : ' + counter);
});
`
谢谢。
答案 0 :(得分:2)
因为您使用$.post
执行异步任务,称为AJAX调用。这意味着如果AJAX调用完成,则调用done()
部分。虽然这个AJAX调用需要一些时间来执行其余的功能。因此,在此部分console.log('value counter : ' + counter);
之前调用此部分console.log('value counter in loop : ' + counter);
。