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

标签 javascript jquery asynchronous

我想知道使用 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?来自服务器的响应可能需要几秒钟,因此迭代可以在调用 - 响应之间进一步深入几个元素。

最佳答案

ajax 调用中的 $element 将具有发出 ajax 调用时的值。

这是因为 .each( 中使用的回调在其整个内容上形成了 closure

如果你要做类似的事情:

const businessUnits = $(".businessUnit");

for (let i = 0; i < businessUnits.length; i++){
    var $element = $( businessUnits[i] );
.
.
.
    $.ajax(....)
}

那么 $element 的值很可能是最后一个元素。

关于javascript - 在循环中定位异步 AJAX 调用中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902779/

相关文章:

c# - 等待与事件处理程序异步

javascript - 如何获取对div的引用?

javascript - 如何在页面重新加载jquery后显示div和当前事件链接

javascript - JSON 数据验证失败

javascript - getSelection 不适用于图像

javascript - 从 json 对象打印选定的属性

JavaScript - 等待/阻塞,直到构造函数完全加载

c# - 哪个异步调用用于数据库连接和仍然响应的 GUI?--

javascript - 这个SDK无法使用,难道是它的SDK不稳定?

javascript - 带推特 Bootstrap 的日期范围选择器