2015-02-08 3 views
-1

Следующий код выполняется последовательно, один за другим. Я хотел бы, чтобы все делалось параллельно. Что мне нужно изменить?Несколько запросов Ajax, весь код выполняется последовательно

window.onload = function() { 

    $.ajax({ 
     type: "GET", 
     url: "/Reports/GetTotalVisits" 
    }).done(function (data) { 
     $('#visitCount').text(data.visitCount); 
    }); 

    $.ajax({ 
     type: "GET", 
     url: "/Reports/GetTotalUsers", 
     async: true 
    }).done(function (data) { 
     $('#userCount').text(data.userCount); 
    }); 

    $.ajax({ 
     type: "GET", 
     url: "/Reports/VisitReport", 
     async: true 
    }).done(function (data) { 
     var ctx2 = document.getElementById("station-chart").getContext("2d"); 
     var myLineChart = new Chart(ctx2).Line(data); 
    }); 

}; 
+0

Вы уверены, что да? Я думаю, что обратные вызовы 'done' вызываются только при завершении запроса. - В любом случае, что вы пытались изменить до сих пор? Существует несколько способов сделать то, что вы хотите; какова ваша конкретная проблема с тем, чтобы запустить ее параллельно? – Jeroen

ответ

0

Следующий код выполняется последовательно, один за другим. Я хотел бы, чтобы все делалось параллельно ...

Я предполагаю, что вы имеете в виду, что хотите, чтобы HTTP-вызовы перекрывались, например, запускать второй, когда первый работает, а не ждет, и запускать третье, пока первые два работают, а не ждут.

Если это так, то клиентский код в порядке. Те ajax-запросы: начались последовательно, но будут работать параллельно. Если вы видите, что они происходят только последовательно, посмотрите на серверную сторону уравнения. Некоторые серверные технологии будут сериализовать запросы от одного и того же клиента, особенно если вы используете «сеансы» или аналогичные. Но этот клиентский код в порядке (и async: true никогда не требуется, это по умолчанию).

Смежные вопросы