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