Почему мои JQuery .ajax запросы не выполняются параллельно? - PullRequest
6 голосов
/ 29 марта 2010

Я пытаюсь сделать два ajax-запроса параллельно, используя jQuery, как это:

    var sources = ["source1", "source2"];

    $(sources).each(function() {
      var source = this;
      $.ajax({
        async: true,
        type: "POST",
        data: {post: "data", in: "here"},
        url: "/my/url/" + source,
        success: function(data) {
          process_result(data);
        }
      });
    });

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

Насколько я могу судить, у меня нет других активных запросов, поэтому я не думаю, что это проблема с максимальным количеством параллельных запросов для браузера. Я что-то здесь упускаю?

Ответы [ 3 ]

13 голосов
/ 29 марта 2010

jQuery не ставит AJAX-запросы в очередь. Если вы уверены , что вы не делаете никаких других запросов, как насчет сервера? Может быть, у него есть только один работник?

EDIT : И чтобы убедиться, я протестировал его с помощью скрипта, который запускает 2 запроса AJAX POST к скрипту PHP, который спит в течение 5 секунд. Они не были в очереди.

8 голосов
/ 30 марта 2010

вы используете php? вы используете session_start ()? сеансы не могут быть открыты параллельно несколькими запросами, так как они будут ждать один за другим, чтобы завершить то, что они делают.

0 голосов
/ 29 марта 2010

Что делать, если вы использовали $ .post вместо $ .ajax. Это работает для меня.

var sources = ["source1", "source2"];

$(sources).each(function() {
  var source = this;
  $.post("/my/url/" + source, {post:"data", in:"here"}, function(data) {
      process_result(data);
  });
)};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...