я пытался сделать параллельные вызовы с помощью метода JQuery $ .when
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Sample Title</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> </script>
<script>
$.when(
// Get the first call
$.ajax("delay_test.php"),
// Get the second call
$.ajax("delay_test.php")
).then(function(first,second) {
$("body").append("Done: "+first[0]+"<br>Done: "+second[0]);
});
</script>
</body>
</html>
Я сделал также код PHP для тестирования этого и увидеть, если это действительно избегал второго вызова после того, как первый закончил.
<?php
sleep(5);
echo date("H:i:s");
?>
Но что я получаю это разница в 5 секунд:
Done: 15:27:55
Done: 15:28:00
Есть ли что-то я делаю неправильно или недоразумение?
Трудно интерпретировать то, что вы говорите, что получаете. Можете ли вы предоставить то, что вы на самом деле видите? И каковы ваши ожидания. Оба запроса будут сделаны немедленно и будут выполняться отдельные экземпляры сценария php. – charlietfl
Просмотрите вкладку сети отладчика Chrome и посмотрите, что фактически отправляет браузер и что сервер фактически возвращает. Вам нужно выяснить, является ли это проблемой сервера или проблемой клиента. Кроме того, следите за кешированием браузера, так как вы отправляете тот же самый запрос. И какая версия jQuery вы используете? '.then()' и '.done()' будут иметь несколько другое поведение в jQuery 3.x, потому что '.then()' меняется, чтобы быть стандартным поведением ES6, которое jQuery не выполнялось в jQuery 1.x и 2.x. – jfriend00
Какие точные результаты вы видите? Пожалуйста, покажите нам, что вы получаете. – jfriend00