Я не уверен, где проблема ...
У меня есть запрос ajax, который проверяет информацию отслеживания для пакета на странице со списком пакетов:
$(".fedex_status").each(function() {
var item = this;
// some code to construct tracking_url
$.ajax({
type: "GET",
url: tracking_url,
async: true,
cache: false,
success: function(data) { $(item).html("(" + data + ")"); },
error: function() { $(item).html("request failed...");}
});
});
Таким образом, если на странице 10 пакетов (10 вещей с классом fedex_status), создается 10 запросов. Запросы работают нормально, но результаты возвращаются по одному (последовательно). Я добавил метку времени для начала и остановки запроса в действии контроллера:
public ActionResult Fedex(string trackingNumber)
{
DateTime requestStart = DateTime.Now;
TrackingService tracking = new TrackingService();
string status = tracking.FedexTrackingNumberStatus(trackingNumber);
return Content(status + " - " + requestStart.ToString("hh:mm:ss.FFF") + " - " + DateTime.Now.ToString("hh:mm:ss.FFF"));
}
Ни одна из временных меток не перекрывается. Таким образом, контроллер обрабатывает запросы по одному. Это кажется дерьмовым.
Теперь запрос ajax 'должен' быть параллельным. Это определенно возвращается немедленно (это асинхронно). Когда я просматриваю журналы IIS, запросы имеют ту же временную метку, что и возвращаемое действие контроллера.
Так что мой вопрос: jquery не отправляет все запросы ajax параллельно или IIS или ASP.NET только обрабатывают запросы последовательно. Я большой новичок в IIS и технических деталях ASP.NET, так что, возможно, он был неверно настроен навсегда и отвечает только на один запрос за раз для всего (только для внутреннего использования, низкий трафик). Тем не менее, я тоже идиот в jquery и не знаю, как тестировать, когда запросы фактически выполняются (все, что я знаю, это то, что вызов $ .ajax немедленно возвращается).
Спасибо!