В рамках проекта Javascript, над которым я работаю, есть несколько синхронных вызовов ajax (я думаю, это делает его "sjax", но я отвлекся) . Сейчас я пишу панель отладки, которая позволила бы мне протестировать сайт с некоторыми искусственно смоделированными условиями сети, добавив $.ajax
. Простые вещи: подделка ответа 500 и т. Д. И выполнение вызовов ajax занимает гораздо больше времени.
Для асинхронных вызовов это просто. Когда реальный ответ возвращается, добавьте setTimeout
, чтобы заставить его ждать искусственного времени ответа, прежде чем вызвать обратный вызов. Однако это не работает с синхронными вызовами, очевидно, поскольку setTimeout
не является синхронным.
Итак, есть ли способ заставить программу Javascript выполнять блокирующее ожидание в течение заданного промежутка времени?
Единственное, о чем я мог подумать, это что-то вроде этого:
function wait(ms) {
var start = +(new Date());
while (new Date() - start < ms);
}
Есть ли лучшее решение?
(Также, пожалуйста, предположите, что есть веская причина для блокировки вызовов ajax ... :-\
)