philipp: Gibt es sowas wie wait()?

Hi alle!

Habe eine Frage: Gibt es soetwas wie eine wait oder sleep Funktion für JS?
Will in ein Script eine Pause einbauen, von 2 Sekunden.

Kann mir jemand helfen?

Danke philipp

  1. Hi,

    Habe eine Frage: Gibt es soetwas wie eine wait oder sleep Funktion für JS?
    Will in ein Script eine Pause einbauen, von 2 Sekunden.

    Das sollte dir weiterhelfen:
    http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout

    Grüße,
    Crunch

    1. hi!

      Das sollte dir weiterhelfen:
      http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout

      nein, leider tut es mir das nicht wirklich.
      mein ziel ist es, eine kleine pause in einer funktion einzulegen, nachdem ein form abgeschickt wurde und bevor eine seite aktuallisiert wird, auf der das abgeschikcte form (in einem anderen frame) enthalten seien soll.
      und da es ja passieren kann, dass das script, dass in die datenbank schreibt, noch nicht fertig ist, bevor die seite schon neu geladen wurde.

      philipp

      1. Moin

        nein, leider tut es mir das nicht wirklich.
        mein ziel ist es, eine kleine pause in einer funktion einzulegen, nachdem ein form abgeschickt wurde und bevor eine seite aktuallisiert wird, auf der das abgeschikcte form (in einem anderen frame) enthalten seien soll.
        und da es ja passieren kann, dass das script, dass in die datenbank schreibt, noch nicht fertig ist, bevor die seite schon neu geladen wurde.

        doch tut es!

        aus:

        haha(); hihi();
        // Hier sollte eine Pause hin
        huhu(); hoho();

        wird
        haha(); hihi()
        setTimeout("hehe()",2000);

        function hehe()
        {
         huhu(); hoho();
        }

        oder (je nach Situtation)
        haha; hihi();
        setTimeout("huhu(); hoho()", 2000);

        --
        Henryk Plötz
        Grüße aus Berlin

        1. hi!

          ja im prinziep schon klar. hier der code:
          ...
          parent.sys.sysform.submit();
          PAUSE
          return true;
          ...

          idee?

          philipp

          1. Hallo Philipp!

            parent.sys.sysform.submit();
            PAUSE
            return true;
            idee?

            function do_simply_return() {
             return;
            }

            function bla() {
             parent.sys.sysform.submit();
             window.setTimeout("do_simply_return()",2000);
             return(true);
            }

            Irgendwann wirst du es noch akzeptieren, dass es nun mal so gemacht wird mit JavaScript ;-)

            viele Gruesse
              Stefan Muenz

            1. Irgendwann wirst du es noch akzeptieren, dass es nun mal so gemacht wird mit JavaScript ;-)

              viele Gruesse
                Stefan Muenz

              :(

              naaagut ;) wenn der münz das sagt. okay.

              function do_simply_return() {
               return;
              }

              function bla() {
               parent.sys.sysform.submit();
               window.setTimeout("do_simply_return()",2000);
               return(true);
              }

              funktioniert aber leider trozdem nicht.
              er gibt zwar keinen fehler aus, aber eine "pause" legt er auch nicht ein.

              was tun?

              philipp

              1. Hallo Philipp

                function do_simply_return() {
                return;
                }

                function bla() {
                parent.sys.sysform.submit();
                window.setTimeout("do_simply_return()",2000);
                return(true);
                }

                funktioniert aber leider trozdem nicht.
                er gibt zwar keinen fehler aus, aber eine "pause" legt er auch nicht ein.

                was tun?

                Dein Denkansatz ist nicht javascript-conform.

                Du willst den Rückgabewert der Funktion zeitverzögert ausgeben. Das geht tatsächlich nicht. settimeout arbeitet code nur zeitverzögert ab. Die Funktion selbst wird weiter abgearbeitet.

                Hier bleibt dir nichts anderes übrig als dein Vorgehen grundsätzlich zu ändern.

                Du schreibst:

                mein ziel ist es, eine kleine pause in einer funktion einzulegen, nachdem ein form abgeschickt wurde und bevor eine seite aktuallisiert wird, auf der das abgeschikcte form (in einem anderen frame) enthalten seien soll.

                Mein Vorschlag: gibt dem formular als target den zu aktualisierenden Frame mit. Dann wird die Antwortseite in diesem Frame erscheinen.
                Du mußt nur serverseitig regeln, das a) die Formulardaten verarbeitet werden und b) die richtige Seite generiert wird
                bzw. einfach darauf weiterleiten.

                Viele Grüße

                Antje

              2. Moin

                Ok, dann musst du nochmal ein bisschen von deinem Code geben oder erzählen.

                Du sagtest das Skript wird aufgerufen, nachdem die Daten abgeschickt sind und soll kurz darauf eine neue Seite in einem anderen Frame laden, damit der Server zwischenzeitlich die Daten bearbeiten kann.
                Du musst also einfach dein Skript umformulieren:

                parent.sys.sysform.submit();
                setTimeout('top.andererframe.location.href="ergebnisseite.htm"',2000);

                Das return(true) in deinem Originalcode macht mich etwas stutzig. Das liest sich, als hättest du die Funktion onClick, onSubmit oder so aufgerufen, mach das weg wenn es sonst nicht nützlich ist.

                Andere Idee: Nach dem submit() liefert der Server sicherlich eine Seite a la "Vielen Dank, Ihre Anfrage wird bearbeitet" oder so. Mach das Skript das den Timeout startet onLoad in diese Seite. Oder noch besser, setze als target im formular den Frame in dem am Ende das Ergebnis erscheinen soll und benutz die Weiterleitung von http://selfhtml.teamone.de/html/kopfdaten/meta.htm#weiterleitung. Dann funktioniert der Spaß auch ohne Javascript.

                --
                Henryk Plötz
                Grüße aus Berlin

                1. Mensch, was werden hier für Umwege gemacht.
                  Folgende Funktion habe ich mal geschrieben:

                  function Wait(zeit) // in ms
                   {
                    var start=new Date().getTime()
                    do
                    {
                     var jetzt=new Date().getTime()
                  //alert("Test\nStart: "+start+"\nJetzt: "+jetzt+"\nZeit: "+zeit+"\nSumme: "+start+zeit)
                    }while(jetzt<start+zeit)
                   }

                  (bei mir als wait.js gespeichert)

                  Über einen Link (irgendwo) auf bitwelt.de würde ich mich freuen.

                  1. Hallo Frank

                    function Wait(zeit) // in ms
                    {
                      var start=new Date().getTime()
                      do
                      {
                       var jetzt=new Date().getTime()
                    //alert("Test\nStart: "+start+"\nJetzt: "+jetzt+"\nZeit: "+zeit+"\nSumme: "+start+zeit)
                      }while(jetzt<start+zeit)
                    }

                    Schwachsinn dieses Script!

                    Unter NT hast du die gesamte Zeit die das Script läuft 100% Systemausauslastung.

                    Programmierer, die solch einen Unfug programmieren, gehören bestraft.

                    Viele Grüße

                    Antje

                    1. Hallo Frank

                      function Wait(zeit) // in ms
                      {
                        var start=new Date().getTime()
                        do
                        {
                         var jetzt=new Date().getTime()
                      //alert("Test\nStart: "+start+"\nJetzt: "+jetzt+"\nZeit: "+zeit+"\nSumme: "+start+zeit)
                        }while(jetzt<start+zeit)
                      }

                      Schwachsinn dieses Script!

                      Unter NT hast du die gesamte Zeit die das Script läuft 100% Systemausauslastung.

                      Programmierer, die solch einen Unfug programmieren, gehören bestraft.

                      Viele Grüße

                      Antje

                      1. Entschuldigung für das unveränderte Posting. Return im Textfeld, es gibt kein <form onsubmit="return confirm('Formular jetzt absenden?')".

                        Schwachsinn

                        Kein Grund persönlich beleidigend zu werden.

                        Kein Schwachsinn. Das Script funktioniert 100%ig, und ist ja nur für den Notfall gedacht, wenn es mit Timer mal nicht gehen sollte.

                        Ist die Beleidigung der Dank für meine Arbeit?

                        NT-Systemausauslastung

                        Nochmal: Das Script ist nur für den Notfall, wenn es mit Timer nicht geht.

                        In 99,9% der Fälle genügt ja ein einfacher Timer:
                        setTimeout('meineFunktion()',zeit) // zeit in ms

                        Luxus bitte selbst programmieren!
                        Ich glaube aber nicht, daß JavaScript irgendeine Möglichkeit bietet, eine Funktion durch eine Pausenfunktion anzuhalten, ohne auf obiges Script zurückzugreifen. Denn sobald man einen Timer benutzt, wird die Ausführung der Funktion fortgesetzt, und das ist ja nicht das, was man will.

                        Vieleicht findet irgendjemand aber etwas, was man einbauen kann, um dem System wenigstens zwischendurch mal die Kontrolle zu geben. Das braucht man dann einfach nur in die while-Schlife zu setzen. Aber wie gesagt, Timer geht nicht, dann wird die Schleife fortgesetzt.

                        Ich habe Euch meinen Code gegeben, wenn jemand diesen Befehl findet, um dem System zwischendurch die Kontrolle zurückzugeben, wäre es nett, ihn mir zuzumailen.

                        Programmierer, die solch einen Unfug programmieren, gehören bestraft.

                        Leute, die sich zu Beleidigungen herablassen, gehören vom Forum ausgeschlossen.

                        1. Hallo Frank

                          Schwachsinn

                          Kein Grund persönlich beleidigend zu werden.

                          Kein Schwachsinn. Das Script funktioniert 100%ig, und ist ja nur für den Notfall gedacht, wenn es mit Timer mal nicht gehen sollte.

                          Ob Notfall oder nicht, jede gewollte und bewußt in Kauf genommene Systemauslastung von 100% ist Schwachsinn und zeugt von mangelhaften Programmierkenntnissen und Programmierideen.
                          Abgesehen davon, viele unerfahrende Beginner würden das Script verwenden ohne sich im klaren darüber zu sein, was passiert. Entsprechende Hinweise gab es ja in deinem Posting auch nicht.

                          Ist die Beleidigung der Dank für meine Arbeit?

                          Du hast deinen Dank gefordert indem du um eine Verlinkung auf deine Seite batest. Ein absolut unübliches Verhalten hier im Forum.

                          Gestehe jedem anderen Forumsteilnehmern zu, diese Arbeit zu kritisieren und vorallem andere vor solchen Fehlern zu warnen.

                          NT-Systemausauslastung

                          Nochmal: Das Script ist nur für den Notfall, wenn es mit Timer nicht geht.

                          Ich habe in meiner JavaScriptpraxis noch niemals solchen einen Notfall erlebt.

                          Luxus bitte selbst programmieren!

                          Niemand hat dich um die Lösung gebeten. Jedoch würde dir ein Ausflug ins Archiv zeigen, dass sehr sehr viele Forumsteilnehmer programmierten Luxus zur Verfügung stellen. Ohne Forderungen zu stellen.

                          Ich glaube aber nicht, daß JavaScript irgendeine Möglichkeit bietet, eine Funktion durch eine Pausenfunktion anzuhalten, ohne auf obiges Script zurückzugreifen. Denn sobald man einen Timer benutzt, wird die Ausführung der Funktion fortgesetzt, und das ist ja nicht das, was man will.

                          Dies wurde im Thread bereits mehrfach erwähnt. Der Funktionscode wird aufgeteilt. Das einzige was nicht möglich ist, ist das gezielte Manipulieren der Return-Werte.

                          Programmierer, die solch einen Unfug programmieren, gehören bestraft.

                          Leute, die sich zu Beleidigungen herablassen, gehören vom Forum ausgeschlossen.

                          :-) ist es wirklich eine Beleidigung, wenn ich klar und deutlich sage was ich von dem Script halte?

                          Jeder muß auch mit Kritik und Selbstkritik leben können.

                          Ich betrachte es als wichtig, anderen Leser vor solchen Lösungen zu warnen.

                          Und ich stehe zu jedem geäußerten Satz.

                          Ein Programm das vorsätzlich und bewußt ein System auslastet, um einen einfachen Warteeffekt oder ähnliches zu erzeugen, ist Schwachsinn. Programmierer, die solch einen Unfug programmieren, gehören bestraft.

                          Viele Grüße

                          Antje

                          1. jede gewollte und bewußt in Kauf genommene Systemauslastung von 100% ist Schwachsinn

                            Für kurze Zeit wird öfter eine maximale Systemauslastung in Kauf genommen als Du denkst/Sie denken, z. B. beim Starten von Programmen.

                            Abgesehen davon, viele unerfahrende Beginner würden das Script verwenden ohne sich im klaren darüber zu sein, was passiert. Entsprechende Hinweise gab es ja in deinem Posting auch nicht.

                            Stimmt, deswegen bin ich ja auch noch mal zu diesem Beitrag zurückgekommen!

                            Du hast deinen Dank gefordert indem du um eine Verlinkung auf deine Seite batest.

                            Ich habe nicht um den Link gebeten, sondern nur gesagt, daß ich es schön fände. Dies ist eine Meinungsäußerung, keine Bitte.

                            Abgesehen davon sollte einem trotzdem die Quellenangabe in Fleisch und Blut übergehen, nur so läßt sich später ohne Klimmzüge nach neueren Versionen suchen. Normalerweise paßt eine Quellenangabe am besten in den Code an die entsprechende Funktion/Stelle, aber im Falle von JavaScript verlängert dies die Ladezeit der Internetseiten, deshalb wird die Quellenangabe oft an anderer Stelle genannt. Wenn sie aber ganz weggelassen wird, wird damit die Suche nach neuen Versionen (z. B. bei Problemen mit neuen Browser-Versionen) oder nach ähnlich aufgebauten Scripts für andere Zwecke unnötig erschwert.

                            Gestehe jedem anderen Forumsteilnehmern zu, diese Arbeit zu kritisieren und vorallem andere vor solchen Fehlern zu warnen.

                            Natürlich kann ich Kritik vertragen, und ich nehme die Systemauslastung sehr ernst. Ich habe mich früher auch immer etwas über DOS-Programme geärgert, die beim Warten auf Tastatureingaben 100% Auslastung erzeugen, das konnte man manchmal sogar im eingeschalteten Radio hören (die Frequenz der Störstrahlung des PC's änderte sich: das Knacken wurde schneller).

                            Aber im Falle des Beginners dieses Themas (er wollte eine Pause von 2 Sekunden) sind 2 Sekunden Auslastung - im Vergleich zu anderem - für mich Kleinkram und damit durchaus vernachlässigbar. Grund:

                            Mein Informatik-Professor hat immer gepredigt, daß die "Menschzeit" wertvoller ist als die "Ausführungszeit". Man sollte also nicht mehr Zeit für die Optimierung der Ausführungsgeschwindigkeit verwenden, als man später damit einsparen kann.

                            Jedoch würde dir ein Ausflug ins Archiv zeigen, dass sehr sehr viele Forumsteilnehmer programmierten Luxus zur Verfügung stellen. Ohne Forderungen zu stellen.

                            Wer's hat, soll es machen. Andere müssen sich die Internet-Zeit vom Munde absparen und können deswegen nicht alles verschenken:

                            So gibt es z. B. auch JavaScripts mit eingefügtem Copyright, wie es z. B. bei http://www.js-menue.de der Fall ist. Um das dortige Script legal nutzen zu dürfen muß man entweder den Copyright-Hinweis drin lassen oder eine Gebühr bezahlen.

                            Selbst SelfHTML hat ein Copyright, nur die Beispiele sind ausdrücklich ausgenommen.

                            Abschließend möchte ich nochmal den Beitrag
                            http://forum.de.selfhtml.org/?m=5127&t=847
                            empfehlen, die dort zuletzt(!) genannte Idee scheint mir der beste Lösungsweg für das Problem des Fragestellers zu sein.

                            1. Hallo, <-- Begruessung

                              Für kurze Zeit wird öfter eine maximale Systemauslastung in Kauf genommen
                              als Du denkst/Sie denken, z. B. beim Starten von Programmen.

                              Aber nicht volle 2 Sekunden lang, sondern eher Bruchteile von Sekunden - wenn
                              ueberhaupt. Auf einem guten Multi-Tasking-System sollte das gar nicht
                              vorkommen.

                              Abgesehen davon, viele unerfahrende Beginner würden das Script verwenden
                              ohne sich im klaren darüber zu sein, was passiert. Entsprechende
                              Hinweise gab es ja in deinem Posting auch nicht.

                              Stimmt, deswegen bin ich ja auch noch mal zu diesem Beitrag zurückgekommen!

                              Bitte was?

                              Du hast deinen Dank gefordert indem du um eine Verlinkung auf deine
                              Seite batest.

                              Ich habe nicht um den Link gebeten, sondern nur gesagt, daß ich es schön
                              fände. Dies ist eine Meinungsäußerung, keine Bitte.

                              Das ist eine indirekte Bitte der Art 'mach das!'.

                              Abgesehen davon sollte einem trotzdem die Quellenangabe in Fleisch und Blut
                              übergehen, nur so läßt sich später ohne Klimmzüge nach neueren Versionen
                              suchen. Normalerweise paßt eine Quellenangabe am besten in den Code an die
                              entsprechende Funktion/Stelle, aber im Falle von JavaScript verlängert dies
                              die Ladezeit der Internetseiten, deshalb wird die Quellenangabe oft an
                              anderer Stelle genannt. Wenn sie aber ganz weggelassen wird, wird damit die
                              Suche nach neuen Versionen (z. B. bei Problemen mit neuen
                              Browser-Versionen) oder nach ähnlich aufgebauten Scripts für andere Zwecke
                              unnötig erschwert.

                              Die Quellen-Angabe sollte aus reinem Ehrgefuehl mit angegeben werden. Versionen
                              wird es hier im Forum von einem geposteten Script nicht sehr haeufig
                              geben.

                              Aber im Falle des Beginners dieses Themas (er wollte eine Pause von 2
                              Sekunden) sind 2 Sekunden Auslastung - im Vergleich zu anderem - für mich
                              Kleinkram und damit durchaus vernachlässigbar. Grund:

                              Man, so einen Kack hab ich noch nie gehoert. Rechne mal aus, wieviel CPU-Zeit
                              volle 2(!!!) Sekunden 100% CPU-Beanspruchung ist. Das ist nicht viel?! Du hast
                              echt nen Knall.
                              Davon mal ganz abgesehen: gib das Script einem DAU, und er macht damit
                              alle 2 Sekunden eine Pause von 2 Sekunden.

                              Mein Informatik-Professor hat immer gepredigt, daß die "Menschzeit"
                              wertvoller ist als die "Ausführungszeit". Man sollte also nicht mehr Zeit
                              für die Optimierung der Ausführungsgeschwindigkeit verwenden, als man
                              später damit einsparen kann.

                              Jedes Stueck Code kann an beliebiger Stelle wieder vorkommen. Halte dir das
                              vor Augen, und du weisst, warum dein Argument nicht zaehlt.

                              Jedoch würde dir ein Ausflug ins Archiv zeigen, dass sehr sehr viele
                              Forumsteilnehmer programmierten Luxus zur Verfügung stellen. Ohne
                              Forderungen zu stellen.

                              Wer's hat, soll es machen. Andere müssen sich die Internet-Zeit vom Munde
                              absparen und können deswegen nicht alles verschenken:

                              Hier gibt es Regeln. Wer sich nicht dran haelt: tuess!

                              So gibt es z. B. auch JavaScripts mit eingefügtem Copyright, wie es z. B.
                              bei http://www.js-menue.de der Fall ist. Um das dortige Script legal nutzen
                              zu dürfen muß man entweder den Copyright-Hinweis drin lassen oder eine
                              Gebühr bezahlen.

                              Was hat das eine mit dem anderen zu tun? Wenn du hier postest, erwarte
                              keinerlei Belohnung ausser der Anerkennung der Leute, die hier regelmaessig
                              posten.

                              Selbst SelfHTML hat ein Copyright, nur die Beispiele sind ausdrücklich
                              ausgenommen.

                              Ehm - ja und?

                              Abschließend möchte ich nochmal den Beitrag
                              http://forum.de.selfhtml.org/?m=5127&t=847
                              empfehlen, die dort zuletzt(!) genannte Idee scheint mir der beste
                              Lösungsweg für das Problem des Fragestellers zu sein.

                              Warum zum Teufel hast du dann den Muell ueberhaupt gepostet?!

                              Gruss,  <-- das ist eine Verabschiedung
                               CK

  2. Hallo philipp

    es gibt setTimeout http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout. Hilft Dir das?

    gruß
    axel