Gibt es sowas wie wait()?
philipp
- javascript
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
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
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
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
hi!
ja im prinziep schon klar. hier der code:
...
parent.sys.sysform.submit();
PAUSE
return true;
...
idee?
philipp
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
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
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
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
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.
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
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
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.
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
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.
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
Hallo philipp
es gibt setTimeout http://selfhtml.teamone.de/javascript/objekte/window.htm#set_timeout. Hilft Dir das?
gruß
axel