3

特定のグローバル変数が 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を参照してください。

4

1 に答える 1

0

もう Jscript を使用していないので (時間が足りないため)、数か月前に何を使用したのか思い出せません... しかし、現在、スクリプトがまだ保存されているかどうかを確認するためにプログラムを調べています。私は数ヶ月前にまったく同じことをしました。

コードを見つけたら投稿します...


申し訳ありません。コードスニペットが見つからないようです。私はそれを削除したにちがいありません...私の典型ですが。

したがって、より良い解決策が利用可能になるまで私が考えることができる唯一のことは、コードを無限ループに入れて、単に中断することです。GlobalVariable が true を返すと、それから除外されます。

これが役立つことを願っています。スニペットを見つけるか、より良い答えを思いつくまで、私はそれを続けるつもりです.

于 2009-08-09T15:18:52.960 に答える