2009-08-09 38 views
3

JScriptで関数を記述しています(JavaScriptではありません)特定のグローバル変数がtrueになるまで中断する必要があります。変数が真になるまで、私はループにしようとするとJScript待機関数

function(req, event, data) { 
     globalVariable = true; 
    } 

は:

while (globalVariable!= true) { 
} 

私はビジーウェイトに行くと、他の機能はAJAX応答の後に呼び出されたとき グローバル変数がtrueに変更されコールバック関数が呼び出されることはありません。

WScript.wait()の使用を提案した人もいますが、私のアプリはWScriptを知るためにシームレスではありません。 SetTimeout()は、非同期呼び出しであり、元の関数を一時停止しないため、助けになりません。

他の提案はありますか?

私の質問についてのいくつかのより多くの情報: 私は私のスクリプトは、2つの機能を呼び出したい:

waitWhileAjaxIsNotCompleted(); 
doSomthingElse(); 

私はwaitWhileAjaxIsNotCompletedを(したい)(A4Jで実装)AJAX要求を送信]ボタンをクリックしますアヤックス完了時に終了します。 いつtha ajaxが完了したかを知るために、私はajaxが完了したときに目を覚ますようなリスナーとして関数を登録しました。この関数は、globalVariable値を変更します。 My waitWhileAjaxIsNotComplete()は無限ループに入り、glovalVariable値が変更されるのを待っています。それが変更されたとき(リスナーが目を覚ました後)、私は機能を終了することができます。doSomthingElse()関数を続けます。

あなたは上の実装の詳細を見ることができます:私は(もう のJscriptを使用していないので、一体私は数ヶ月前 を使用したもの覚えていないことができQTP Web extensibilty toolkit and ajax

+0

ここでの質問と回答:http://stackoverflow.com/questions/2198449/settimeout-not-working-in-windows-script-jscript –

答えて

0

時間が足りません)... しかし、私はまだ スクリプトを保存しているかどうかを確認するために私の プログラムを探しています。私は数ヶ月前に全く同じ ものをしました。

私はそのことについて申し訳ありません それ...


を見つけた後、私はコードを投稿します。コードスニペットを見つけることができません。私はそれを削除する必要があります...私の典型です。

私は、より良い解決策が無限ループにコードを入力して、簡単に破ることができるまで考えることができます。 GlobalVariableがtrueを返すと、それを取り除きます。

こちらがお役に立てば幸いです。スニペットを見つけたり、もっと良い答えを出すまで、私はそれを保つつもりです。

+1

ありがとう。私はそれを試みましたが、無限ループに入ると、グローバル変数をtrueに変更する他の関数を呼び出すことはできません。他の関数を実行できるように、無限ループ内にwait()が必要です。 – Eldad

+0

これは私を困惑させてしまった。あなたはこの問題に関してもう少し詳しくお聞かせください。 –

+1

私はこの問題に関するいくつかの詳細を記入するために質問を編集しました。 – Eldad