Wurzel: Rerender des Browsers bei zeitintensiven JS-Operationen

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

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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

      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes