Функция ожидания JScript

У меня есть функция, написанная на 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


person Eldad    schedule 09.08.2009    source источник
comment
Здесь вопрос и ответ: stackoverflow.com/questions/2198449/   -  person Artem Oboturov    schedule 20.08.2013


Ответы (1)


Я не могу вспомнить, что, черт возьми, я использовал несколько месяцев назад, так как я больше не использую Jscript (недостаточно времени)... Но сейчас я просматриваю свою программу, чтобы увидеть, сохранен ли еще сценарий. Я сделал то же самое несколько месяцев назад.

Я опубликую код, как только найду его...


Прости за это. Я не могу найти фрагмент кода. Должно быть, я удалил его... Хотя это типично для меня.

Итак, единственное, что я могу придумать, пока не будет доступно лучшее решение, это ввести ваш код в бесконечный цикл и просто сломать; из него, как только GlobalVariable возвращает значение true.

Надеюсь, это поможет. Я буду продолжать, пока не найду фрагмент или не придумаю гораздо лучший ответ.

person jay_t55    schedule 09.08.2009
comment
Спасибо. Я пробовал, но при переходе в бесконечный цикл никакая другая функция не может быть вызвана для изменения глобальной переменной на true. Мне нужно ждать() внутри бесконечного цикла, чтобы можно было выполнять другие функции. - person Eldad; 10.08.2009
comment
Это поставило меня в тупик. Не могли бы вы предоставить более подробную информацию по этому вопросу? - person jay_t55; 11.08.2009
comment
Я отредактировал вопрос, чтобы получить более подробную информацию о проблеме. - person Eldad; 11.08.2009
comment
Прошло уже несколько дней с тех пор, как я ответил на этот вопрос, я прочитал дополнительные детали, которые вы добавили на днях, но до сих пор не могу понять. Я все еще искал в Интернете решение, но похоже, что никто не пробовал это раньше... Я продолжу поиск, так как это очень интересный вопрос, и я опубликую его, когда/если я найду решение, или в хоть что-то, что может быть полезно. - person jay_t55; 15.08.2009
comment
Хорошо... Я снова вернулся. Нечего докладывать. Вы пытались поговорить с разработчиком Jscript по адресу microsoft.com/connect? Они там довольно отзывчивые... :-) - person jay_t55; 22.08.2009