У меня есть функция, написанная на JScript (не javascript), которую мне нужно приостановить, пока определенная глобальная переменная не станет истинной. Глобальная переменная изменяется на true, когда после ответа ajax вызывается другая функция:
function(req, event, data) {
globalVariable = true;
}
Когда я пытаюсь выполнить цикл до тех пор, пока переменная не станет истинной:
while (globalVariable!= true) {
}
Я перехожу в занятое ожидание, и функция обратного вызова никогда не вызывается.
Некоторые предлагали использовать WScript.wait(), но мое приложение не знает WScript. SetTimeout() также не поможет, потому что это асинхронный вызов и не приостановит мою исходную функцию.
Любое другое предложение?
Еще немного информации по моему вопросу: я хочу, чтобы мой скрипт вызывал 2 функции:
waitWhileAjaxIsNotCompleted();
doSomthingElse();
Я хочу, чтобы функция waitWhileAjaxIsNotCompleted() нажимала кнопку, которая отправляет запрос ajax (реализованный A4J), и завершалась после завершения ajax. Чтобы я знал, когда завершится ajax, я зарегистрировал функцию в качестве слушателя, которая будет пробуждена, когда завершится ajax. Эта функция изменяет значение globalVariable. Мой метод waitWhileAjaxIsNotComplete() входит в бесконечный цикл, ожидая изменения значения glovalVariable. Когда она изменится (после того, как прослушиватель проснется), я могу завершить функцию и продолжить с помощью функции doSomthingElse().
Вы можете увидеть больше о реализации на: инструментарий QTP Web extensibilty toolkit и ajax