Я пытаюсь отправить несколько запросов AJAX. Но каждый запрос ожидает завершения предыдущего. Есть ли причина для этого?

Вот мой код JS.

tjq.ajax({
    type: 'POST',
    data: { id: _id },        
    dataType: 'json',        
    url: '/dynamic-packages?act=addtocart',        
    success: function (r) {
        ///...
    }
});

Вот код C #. Я просто поставил режим сна на 10 секунд, чтобы продемонстрировать продолжительность в консоли разработчика.

protected void Page_Load(object sender, EventArgs e) {
    if (Request["act"] == "addtocart")
    {
        Thread.Sleep(10000);
        Response.End();
    }        
}

Как видите, длительность СС увеличивается на 10 секунд для каждого запроса.

Developer console

ОБНОВЛЕНИЕ :

Вот как я называю запрос ajax

for (var i = 0; i < Destinations.length; i++) {
    getHotels(i);
}
0
ypbr 27 Дек 2019 в 10:54
Проблема в том, что даже если я открываю SSH-туннель в фоновом режиме, кажется, что мой JAVA никогда не выходит, потому что событие Node.js grep никогда не вызывается. Если я не открываю туннель SSH, он завершает работу и генерирует событие, как ожидалось.
 – 
felixmosh
27 Дек 2019 в 11:04
first_file.js
 – 
ypbr
27 Дек 2019 в 11:06
1
Выгрузка данных из Powershell учетной записи службы автоматизации Azure
 – 
stefan judis
27 Дек 2019 в 11:16
second_file.js
 – 
ypbr
27 Дек 2019 в 11:48

1 ответ

Используйте оператор async для определения приоритета в первом или следующем. Установка async в false означает, что оператор, который вы вызываете, должен завершиться до того, как будет вызван следующий оператор в вашей функции. Если вы установите async: true, то этот оператор начнет свое выполнение, и следующий оператор будет вызван независимо от того, завершился ли еще оператор async.

async: false

function getData1(){

  var data;

    var param1 = jQuery('field1').val();
    var param2 = jQuery('field2').val();

    jQuery.ajax({
    url: "ajx_request1.php", 
    type: 'POST',
    data: { 
       'field1': param1, 
       'field2': param2
    },
        dataType: "json",
    async: false, 
    success: function(result){
        data=result;
      },
    error: function(result) {
        alert("Error");
    }
    });

  return data;

}

function getData2() {
  var data;
    var param1 = jQuery('field1').val();
    var param2 = jQuery('field2').val();

    jQuery.ajax({
    url: "ajx_request2.php", 
    type: 'POST',
    data: { 
       'field1': param1, 
       'field2': param2
    },
        dataType: "json",
    async: false, 
    success: function(result){
        data=result;
      },
    error: function(result) {
        alert("Error");
    }
    });

  return data;


  return data;
}

getData1();
getData2();

Вы также можете установить тайм-аут для ответа, опаздывая с другим заявлением.

setTimeout(function() {
    var data = getData2();
    console.log("The data is: " + data);
},1000);
0
Samir Lakhani 27 Дек 2019 в 11:43