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