特定のグローバル変数が true になるまで一時停止する必要がある JScript (javascript ではない) で記述された関数があります。ajax 応答の後に別の関数が呼び出されると、グローバル変数が true に変更されます。
function(req, event, data) {
globalVariable = true;
}
変数が true になるまでループしようとすると:
while (globalVariable!= true) {
}
私は忙しい待機に入り、コールバック関数は決して呼び出されません。
WScript.wait() の使用を提案する人もいましたが、私のアプリは WScript を認識していません。SetTimeout() も非同期呼び出しであり、元の関数を中断しないため、役に立ちません。
他の提案はありますか?
私の質問に関する詳細情報: スクリプトで 2 つの関数を呼び出す必要があります。
waitWhileAjaxIsNotCompleted();
doSomthingElse();
waitWhileAjaxIsNotCompleted ()で ajax リクエスト (A4J によって実装) を送信するボタンをクリックし、ajax の完了時に終了するようにします。ajax がいつ完了したかを知るために、ajax が完了したときに呼び出されるリスナーとして関数を登録しました。この関数は、globalVariable 値を変更します。私のwaitWhileAjaxIsNotComplete()は無限ループに入り、globalVariable 値が変更されるのを待ちます。変更されたら (リスナーが目覚めた後)、関数を終了してdoSomthingElse()関数を続行できます。
実装の詳細については、QTP Web 拡張ツールキットと ajaxを参照してください。