在循环中定位异步 AJAX 调用中的元素

我想知道使用 jquery 循环遍历 html 元素时异步调用是如何工作的。我知道异步调用在进行服务器调用时不会停止迭代。这意味着,即使来自调用的响应尚未完成,脚本也会立即按顺序迭代下一个元素。


我的问题是,在每次调用时,我都设置了不同的值,如下所示:


$(".businessUnit").each(function (index) {

      var $element = $(this);

      var iUCBU_KEY = $element.prop('data-iucbu_key');

      var iENTE_KEY = $element.prop("data-iente_key");


$.ajax({

      method: 'post',

      url: '/CodeBase/LoadInsertCATETE_BASE1/',

      data: {

        iUCBU_KEY: iUCBU_KEY,

        iENTE_KEY: iENTE_KEY

      },

      success: function (response) {

        //will there be $element from sequence when call was made?

          $element.find('input.price').val(response.price);


      },

      error: function (response) {


      }

    });      

});

哪个 $element 将被更新?它是调用的 $element 还是当前迭代的 $element ?来自服务器的响应可能需要几秒钟,因此迭代可以在调用 - 响应之间进一步处理几个元素。


手掌心
浏览 167回答 1
1回答

繁星淼淼

将$element在Ajax调用会发出Ajax调用时,它具有的值。那是因为在.each(表单中使用的回调是对其整个内容的闭包。如果您要执行以下操作:const businessUnits = $(".businessUnit");for (let i = 0; i < businessUnits.length; i++){&nbsp; &nbsp; var $element = $( businessUnits[i] );...&nbsp; &nbsp; $.ajax(....)}那么 的值$element很可能是最后一个元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript