Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Zeitverzögerung in JavaScript





Frage

kann mir jemand sagen wie ich eine Zeitverzögerung in einer Schleife hinbekomme? danke, alfons

Antwort 1 von abc123


var waiting=false;
function _wait(){
  waiting=false;
}
function wait(duration) {
  waiting=true;
  window.setTimeout("_wait()",duration); 
  while(waiting);
}


Aufruf: wait(5000); // 5 Sekunden warten

Antwort 2 von abc123

Habe es ausprobiert. Dummerweise funktioniert es nicht. Warum auch immer?

Gruss,
Michael

Antwort 3 von abc123

OK, es geht auch so:


function waitC(seconds) {
  var stopTime = (new Date()).getSeconds();
  stopTime = ((stopTime+seconds)<60)?stopTime+seconds:seconds-(60-stopTime);
  while((new Date()).getSeconds()<stopTime);
}


Gruss,
Michael

Antwort 4 von MixMax

mit einer Whileschleife gehts zwar bestimmt, aber das führt zu einer starken cpu-last bei der schleife.

wenn technisch bei dir möglich dann mache eine funktion in der die befehle stehen die erst nach einiger zeit gestartet werden sollen.


also

...vorherige befehle
window.setTimeout('Wartebis();',20000);
function Wartebis() {
  ...befehle die erst nach der Zeit von
  20 sekunden gestatet werden.
}


Antwort 5 von alfons

funzt schon irgendwie, aber nur wenn ich ein alert reinschreibe und mir die stopTime ausgeben lasse.
Werd mal noch ein wenig basteln ...

danke!

Antwort 6 von abc123

Ich dachte Dir geht es um eine Pause INNERHALB Deines Javascript Codes und nicht um die verzögerte Ausführung einer bestimmten Funktion.
Leider gibt es keinen sleep, wait oder ähnliche Befehle in Javascript.

Was genau möchtest Du damit erreichen?


Antwort 7 von abc123

Noch eine Alternative:


function test(a) {
  switch(a) {
  default:
    alert("Code vor der ersten Pause");
    // hier Code einfügen
    window.setTimeout("test(2)", 5000);
    break;
  case 2:
    alert("Code nach der ersten Pause");
    // hier Code einfügen
    window.setTimeout("test(3)", 3000);
    break;
  case 3:
    alert("Code nach der zweiten Pause");
    // hier Code einfügen
  }
}


Gruss,
Michael

Antwort 8 von alfons

Danke, danke! Damit komme ich eine Weile aus. Der letzte Beitrag ist nat. sehr elegant, da hatte ich gar nicht drüber nachgedacht!

nochmal Danke,
alfons

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: