jquery each|increment变量不起作用

jquery each | increment variable not working

本文关键字:变量 不起作用 increment each jquery      更新时间:2023-09-26

我有一个包含多个值的变量(对象)。

对于这些值中的每一个,我都执行一个AJAX,其中包含"post"answers"done"方法,如下所示。

你能帮我理解为什么变量"counter"在循环中很好地递增吗(第一个console.log显示,1,2,3,4,…)。

但是当循环结束时,第二个"console.log"显示"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);
});

`

谢谢。

因为您使用$.post执行异步任务,所以称为AJAX调用。这意味着,如果AJAX调用完成,done()部分将被调用。虽然这个AJAX调用需要一些时间,但函数的其余部分将被执行。所以这个部分console.log('value counter : ' + counter);在这个部分console.log('value counter in loop : ' + counter);之前被调用。