Rerender des Browsers bei zeitintensiven JS-Operationen
Wurzel
- javascript
Ja, das Thema klingt komisch, ist auch so :-)
Aber erstmal hallo zusammen.
Hmmm, wie soll ich mein Problem am besten erklären?
Ich habe eine rekursive JavaScript-Funktion, die Teilweise sehr zeitintensiv ist und möchte den User darüber informieren, dass sich noch etwas tut. Sprich, wenn der Prozess gestartet wird, blende ich ein Div mit diversen Informationen ein, welches ich am Ende wieder ausblende. Nur dummerweise wird das DIV nicht gerendert, während das Script noch läuft - by the way...es ist eine AJAX-Geschichte.
Hier mal ein PseudoBlock:
function timeConsumingScript() {
divObj.style.visibility = "visible";
longTimeScript(); // start der rekursiven Funktion --> zeitintensiv
divObj.style.visibility = "hidden";
}
Könnte mir da bitte jemand weiterhelfen? Ich bin mit meinem Latein am Ende. :-(
Schon mal vielen Dank,
Jörg
Hi,
Nur dummerweise wird das DIV nicht gerendert, während das Script noch läuft
zwinge das longTimeScript in einen neuen Thread. Timeouts sind Deine Freunde.
by the way...es ist eine AJAX-Geschichte.
Dann verstehe ich nicht, wie das dermaßen zeitintensiv sein kann, zumal das "A" in "AJAX" für "asynchron" steht. Es sollte genügend Wartezeit zur Verfügung stehen.
Cheatah
Hi und danke,
zwinge das longTimeScript in einen neuen Thread. Timeouts sind Deine Freunde.
Das hab ich auch schon versucht, aber damit habe ich ja keinen Zugriff auf lokale Variablen. Die Geschichte ist OO aufgebaut und habe dann ein Problem damit.
Dann verstehe ich nicht, wie das dermaßen zeitintensiv sein kann, zumal das "A" in "AJAX" für "asynchron" steht. Es sollte genügend Wartezeit zur Verfügung stehen.
Wie gesagt, es ist eine rekursive Funktion...und sogesehen ist es eher als SJAX implementiert :-) Der Browser liefert während der Operation auch keine Rückmeldung...selbst animated Gifs stehen still. Eben darum wäre eine Meldung an den User fast zwingend.
Grüße, Jörg
Hi,
Das hab ich auch schon versucht, aber damit habe ich ja keinen Zugriff auf lokale Variablen.
doch, z.B. über anonyme Funktionen oder das Function-Objekt.
Die Geschichte ist OO aufgebaut und habe dann ein Problem damit.
Bist Du mal bei Recherchen über prototype.js gestolpert? Dort ist bewiesen, dass dieses Problem lösbar ist.
Wie gesagt, es ist eine rekursive Funktion...und sogesehen ist es eher als SJAX implementiert :-)
Schlecht[tm] :-)
Der Browser liefert während der Operation auch keine Rückmeldung...selbst animated Gifs stehen still.
Dann empfehle ich ein "SJAX".replace("S", "A").
Cheatah