2011-01-07 10 views
1

Ich feuere gerade ein benutzerdefiniertes YUI-Ereignis, das nach einer Reihe von Restaufrufen abgeschlossen ist. Eine Funktion, die eine Ladeleiste deaktiviert, wird für das benutzerdefinierte Ereignis abonniert. Wenn jedoch der Rest-Anruf aus irgendeinem Grund abbricht, möchte ich den Ladebalken trotzdem deaktivieren (der Ladebalken lässt den Hintergrund grau erscheinen und verhindert Benutzerinteraktion) und möglicherweise ein Popup-Fenster anzeigen, das besagt, dass Daten nicht geladen werden konnten vollständig. Ich dachte, eine einfache Zeitüberschreitung würde den Trick bringen, aber ich bin mir nicht sicher, ob es die beste Lösung ist. Hier ist ein Pseudocode:Fire Event Einmal nach Timeout oder ein anderes Event ist fertig

var event = new Yahoo...CustomEvent("abc"); 
event.fireOnce = true; //I don't need to fire this event multiple times 
event.subscribe(hideWaitBarFunction); 
window.setTimeout(event.fire(), 10000); 
//rest call 
event.fire(); //if rest call doesn't return after 10 seconds, hide wait bar anyway 

In diesem Fall sollte das Ereignis nur einmal ausgelöst werden. Angenommen, ich möchte keinen Fehler machen, gibt es einen besseren Weg, dies zu tun? Mein Javascript/Yui-Wissen ist ... begrenzt. Lassen Sie mich wissen, wenn die Dinge geklärt werden müssen.

+0

Nun, die obige Lösung funktioniert offiziell. Es scheint nicht das sauberste, aber die Funktionalität funktioniert perfekt. Ich bin immer noch offen für Vorschläge, aber die Implementierung an mehr Orten würde eine Menge zusätzlichen Code erzeugen. – Joseph

Antwort

0

Ich nehme an, Sie verwenden YUI 2.x, in diesem Fall hat der Callback des ConnectionManagers einen Fehler-Hook, wo Sie diese Ereignisauslösung anschließen könnten. Funktioniert das nicht für dich?

+0

Diese Frage wurde vor mehr als einem Jahr gestellt. Eine Lösung wird nicht mehr benötigt. – Joseph