Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

31

24.01.2018, 15:46

Nein, das hast du falsch verstanden. Beide sind asynchron. Den Unterschied habe ich dir ja nun schon mehrfach gesagt.

32

24.01.2018, 15:54

Das erzeugt ein regelmäßiges Aufrufen, weil du explizit dafür sorgst. setTimeout von sich aus tut das nicht.
Wenn du es so machst wie in deinem Beispiel, hast du den Vorteil, dass du das regelmäßige Aufrufen einfacher abbrechen kannst, wenn du es nicht mehr brauchst, indem du einfach nicht mehr setTimeout aufrufst. Bei setInterval müsstest du dir den Rückgabewert merken und clearInterval aufrufen, um es zu stoppen.


Ich habe ja im Moment das Problem mit meinem zu hohen RAM Verbrauch und ich denke "setTimeout" oder "setInterval" zu benutzen wird da kein grosen Unterschied machen und deswegen bleibe ich lieber bei "setTimeout", da es auch den Vorteil zu haben scheint mehr asynchron zu sein.

Jetzt muss ich mich noch entscheiden wie ich am besten die PHP Datei aufrufen soll, so wie sich das anhoert empfiehlst du mir auch eher das mit der Jquery Ajax Funktion zu machen. Mein Beispiel das ich im Moment habe wo ich auch diese Jquery Ajax Funktion benutze scheint aber nicht asynchron zu sein und es scheint aber wieder rum ein Vorteil zu bringen wenn ich es asynchron aufbaue.

Von daher mueste ich jetzt kucken wie ich das aufrufen der PHP Datei asynchron aufbaue.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

33

24.01.2018, 15:55

setTimeout und setInterval sind beide asynchron.
Gegen dein RAM-Problem hilft das aber vermutlich alles nichts.

34

24.01.2018, 15:59

Nein, das hast du falsch verstanden. Beide sind asynchron. Den Unterschied habe ich dir ja nun schon mehrfach gesagt.

setTimeout und setInterval sind beide asynchron.
Gegen dein RAM-Problem hilft das aber vermutlich alles nichts.


Ja ich denke das es kein grosen Unterschied machen wird welche ich von beiden benutze.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

35

25.01.2018, 10:04

Wie wäre es denn wenn du dir ein vernünftiges JavaScript Tutorial ansiehst. Codecademy und Co haben da sicherlich vernünftige Sachen. Du nimmst hier sehr viele Dinge einfach an ohne sie wirklich zu wissen. Und das ist eine schlechte Sache.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

36

25.01.2018, 10:44

Wie wäre es denn wenn du dir ein vernünftiges JavaScript Tutorial ansiehst. Codecademy und Co haben da sicherlich vernünftige Sachen. Du nimmst hier sehr viele Dinge einfach an ohne sie wirklich zu wissen. Und das ist eine schlechte Sache.


Ich glaube so ein generelles Tutorial ueber Javascript waere fuer mich nicht das richtige, ich habe ja im Moment nur das Problem das ich versuche mein Javascript code zu optimieren. Und falls ich mal irgendeine bestimmte Funktion suche kann ich auch imm Handbuch nachschauen. Ich bin ja nicht dabei von Grund auf Javascript neu zu lernen und in einem Anfanger Tutorial wo soll ich dort Antworten auf solche spezielle Fragen bekommen.

Ich denke meine Fragen sind in Foren zur Zeit besser aufgehoben, hier findet man ja immer wieder Leute die sich gut auskennen und ein Tip geben.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

37

25.01.2018, 10:54

Du machst aber halt Dinge die man so nicht machen sollte und dir fehlen teilweise die Zusammenhänge. Das ist ja jetzt nicht so dass du dich ein halbes Jahr durch so ein Tutorial kämpfen müsstest. Aber ein paar Basics sind eben wichtig. Vor allem wenn man Code optimieren möchte. Das geht am besten wenn man wirklich versteht was da passiert.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

38

25.01.2018, 11:36

Du machst aber halt Dinge die man so nicht machen sollte und dir fehlen teilweise die Zusammenhänge. Das ist ja jetzt nicht so dass du dich ein halbes Jahr durch so ein Tutorial kämpfen müsstest. Aber ein paar Basics sind eben wichtig. Vor allem wenn man Code optimieren möchte. Das geht am besten wenn man wirklich versteht was da passiert.


Ja deswegen bin ich ja jetzt hier um von euch zu lernen. Es sind ja nur Kleinigkeiten die ich noch lernen muss um mein Code zu optimieren und einmal gelernt ist gelernt. Wozu soll ich mich mit einem Javascript Anfaenger Kurs da aufhalten wenn ich nur noch so Kleingkeiten verbessern will.

Aber ich beschwere mich sicher auch nicht wenn keiner Zeit und Lust hat seine Tips und Ideen zu schreiben, das ist jedem frei ueberlassen.

Im Moment denke ich das ich nur noch meine Abfragen zur PHP Datei irgendwie optimieren soll damit es asynchroner wird, so habe ich das bisher verstanden, funktionieren tut es zwar auch so schon, aber nicht optimal.

Du kannst auch gerne schreiben wo du denkst das ich von Grund auf falsch liege, vielleicht kann ich ja dort auch wieder was von dir lernen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

39

25.01.2018, 11:49

Im Moment denke ich das ich nur noch meine Abfragen zur PHP Datei irgendwie optimieren soll damit es asynchroner wird, so habe ich das bisher verstanden, funktionieren tut es zwar auch so schon, aber nicht optimal.

Es kann nicht asynchroner werden. Entweder etwas ist asynchron oder synchron. Der Unterschied ist eigentlich ganz einfach. Ich erkläre es dir an etwas Pseudocode. Sagen wir du hast eine Funktion welche eine Anfrage an einen Server macht. Der Server gibt einen String zurück und dieser soll danach in deinem Client ausgegeben werden. Synchron sähe das so aus:

Quellcode

1
2
var label = getStringFromServerSynchron(); // hole den String vom Server
print(label); // gebe ihn aus


Wichtig ist hierbei dass der Aufruf der Methode getStringFromServerSynchron() den Programmfluss unterbricht. Die nächste Zeile wird erst ausgeführt wenn die Methode durchgelaufen ist. In diesem Fall dauert das so lange bis der Server eine Antwort sendet. Wenn der Server 10 Sekunden für die Antwort benötigt dann bleibt dein Programm 10 Sekunden lang stehen. Das kann unter Umständen bedeuten dass dein programm keine Benutzereingaben entgegen nimmt, nicht geschlossen werden kann, das Fenster nicht verschoben werden kann und vieles mehr.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
// Als erstes definieren wir eine Funktion die einen String ausgeben kann.
function printString(var string) {
  print (string);
}

// Hier machen wir eine asynchrone Anfrage an den Server,
// Wir übergeben die printString Methode als Callback.
// Die getStringFromServerAsynchron kann jetzt das Ergebnis
// holen und dann printString aufrufen wobei das Ergebnis
//  als Parameter übergeben wird
getStringFromServerAsynchron(printString);
print("Hallo Welt");


Asynchron bedeutet nun dass die Funktion den Programmfluss nicht unterbricht. Das heißt print("Hallo Welt"); kann aufgerufen werden bevor das Ergebnis vom Server zurück geliefert wurde. Das bedeutet auch dass dein Programm dadurch nicht hängen bleibt, weiterhin Eingaben entgegen nehmen kann, geschlossen werden kann und vieles mehr.

Im Fall von Javascript ist es jetzt so dass du nicht möchtest dass der Programmfluss blockiert. Das würde sonst bedeuten dass der Benutzer nichts mehr auf der Seite anklicken kann. Würde der Browser mit nur einem einzelnen Thread arbeiten würde das sogar bedeuten dass deine Seite den ganzen Browser zum stoppen bringen könnte, einfach weil eben der gesamte Thread blockiert. Von daher arbeitet man in JavaScript asynchron. Das solltest du dir dringend angewöhnen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

40

25.01.2018, 11:54

Gute Erklärung von Schorsch, lies sie dir aufmerksam durch! :)

Werbeanzeige