2009-08-09 11 views
3

Ich habe eine Funktion geschrieben in JScript (Nicht Javascript) Ich muss aussetzen, bis eine bestimmte globale Variable wahr wird. Die globale Variable auf true geändert, wenn eine andere Funktion nach einer Ajax-Antwort genannt wird:JScript Wartefunktion

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

Wenn ich Schleife versuchen, bis die Variable wahr ist:

while (globalVariable!= true) { 
} 

ich in einem langen Warte und Die Callback-Funktion wird nie aufgerufen.

Einige haben die Verwendung von WScript.wait() vorgeschlagen, aber meine App kennt WScript nicht. SetTimeout() wird auch nicht helfen, weil es asynchroner Anruf ist und meine ursprüngliche Funktion nicht aussetzen wird.

Irgendwelche anderen Vorschläge?

Einige weitere Informationen in Bezug auf meine Frage: Ich möchte mein Skript 2 Funktionen aufzurufen:

waitWhileAjaxIsNotCompleted(); 
doSomthingElse(); 

Ich möchte die waitWhileAjaxIsNotCompleted() eine Schaltfläche klicken, die ein Ajax-Request (implementiert durch A4J) einreicht und enden mit der Ajax-Vollendung. Damit ich weiß, wann der Tha Ajax abgeschlossen ist, habe ich eine Funktion als Zuhörer registriert, die erweckt wird, wenn der Ajax abgeschlossen ist. Diese Funktion ändert einen globalVariable-Wert. Mein waitWhileAjaxIsNotComplete() geht in eine Endlosschleife und wartet darauf, dass sich der Wert von glovalVariable ändert. Wenn es sich ändert (nachdem der Listener aufgewacht ist), kann ich die Funktion ad mit der Funktion doSomthingElse() beenden.

Sie können mehr über die Umsetzung siehe: QTP Web extensibilty toolkit and ajax

+0

Hier die Frage und eine Antwort: http://stackoverflow.com/questions/2198449/settimeout-not-working-in-windows-script-jscript –

Antwort

0

Ich kann mich nicht erinnern, was zum Teufel ich vor ein paar Monaten verwendet, da ich JScript nicht mehr verwenden (nicht genug Zeit) ... Aber ich suche derzeit in meinem Programm, um zu sehen, ob ich noch das Skript gespeichert habe. Ich habe genau die gleiche Sache ein paar Monate zurück.

Ich werde den Code schreiben, sobald ich es gefunden habe ...


Tut mir leid. Ich kann das Code-Snippet nicht finden. Ich muss es gelöscht haben ... Typisch für mich aber.

Also, das einzige, was ich denken kann, bis eine bessere Lösung verfügbar ist, geben Sie Ihren Code in eine Endlosschleife, und einfach zu brechen; wenn die GlobalVariable true zurückgibt.

Ich hoffe, das hilft. Ich werde weitermachen, bis ich entweder das Snippet finde oder mir eine viel bessere Antwort einfallen lasse.

+1

Danke.Ich habe es versucht, aber wenn ich in eine Endlosschleife gehe, kann keine andere Funktion aufgerufen werden, um die globale Variable in wahr zu ändern. Ich brauche die wait() innerhalb der Endlosschleife, damit andere Funktionen ausgeführt werden können. – Eldad

+0

Das hat mich ratlos gemacht. Können Sie bitte ein paar weitere Details zu diesem Thema angeben? –

+1

Ich habe die Frage bearbeitet, um weitere Details zu dem Problem zu erhalten. – Eldad