Javascript Ajax循环调用:Ajax请求被取消,最后一个请求除外

Javascript Ajax循环调用:Ajax请求被取消,最后一个请求除外,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在一个循环中有一个ajax调用,如下所示 reloadSetupAndRecurringAvailable = function( objDiscountRow ) { var intProductId = objDiscountRow.find('.product-id').val(); var strUrl = '/?module=contract_setup_products-new&action=get_setup_and_recurring_availabl

我在一个循环中有一个ajax调用,如下所示

reloadSetupAndRecurringAvailable = function( objDiscountRow ) {

    var intProductId = objDiscountRow.find('.product-id').val();
    var strUrl = '/?module=contract_setup_products-new&action=get_setup_and_recurring_available';

    $.ajax( {
    url: strUrl,
    data: { 'product_id': intProductId },
    success: function( response ) {
        fltSetupAvailable       = parseFloat( response.data.fltSetupAvailable );
        fltRecurringAvailable   = parseFloat( response.data.fltRecurringAvailable );

        objDiscountRow.find('.setup-available').text( fltSetupAvailable + '%' );
        objDiscountRow.find('.recurring-available').text( fltRecurringAvailable + '%' );
    }
} );

reloadDiscountProducts = function() {

    $('.discount-row').each( function() {
        reloadSetupAndRecurringAvailable( $(this) );
    } );
}

reloadDiscountProducts();
当代码执行时,在“网络”选项卡中,最后一个ajax调用显示成功,而之前的所有调用都显示在
cancelled
状态中


根据我的发现,这是由于异步。ajax请求可能需要任何时间。如何修复代码,使所有请求都处于已完成状态?

这是否回答了您的问题?这里没有使用async/Wait或Promissions。所以标签是misleading@Liam您能否解释一下:a)闭包如何影响这个问题b)闭包如何导致以前的调用被取消?您还将如何调用
reloadDiscountProducts
?是通过点击按钮/链接实现的吗?这是否相关:闭包会影响这一点,因为
objDiscountRow
会随着每个变量的变化而变化。这是一个典型的突变问题。虽然OP没有给出任何接近so
”的信息\_(ツ)_/“