molily: for-Schleife und Ajax

Beitrag lesen

Hallo,

Jedenfalls solltest du den Ajax-Request keinesfalls auf synchron umstellen.

Magst Du erklären warum? Meinst Du das generell, bzw. wann ist ein synchroner Ajax-Aufruf sinnvoll?

Ein synchroner Aufruf ist nie wünschenswert, denn er hält die JavaScript-Verarbeitung solange an, bis die Serverantwort eingetrudelt ist. Das kann kurz oder lange dauern, währenddessen sind keine parallel laufenden Scripte möglich. Dieses Verhalten ist für JavaScript sehr untypisch, daher kann sich die Website seltsam während eines synchronen Ajax-Requests verhalten. Im schlimmsten Fall ist das gesamte User-Interface eingefroren und reagiert nicht auf Eingaben.

Durch die funktionale Natur von JavaScript und die Event-Loop (die Warteschlange, in der auszuführende Funktionen gestellt und nacheinander abgearbeitet werden) ist es möglich, sämtlichen Input und Output (I/O) in JavaScript asynchron zu verarbeiten. Deshalb sind fast alle wichtigen APIs zum Lesen und Schreiben asynchron, arbeiten also mit Callbacks bzw. Deferreds oder eventbasiert. Damit wird die weitere Ausführung von JavaScripten nicht geblockt, stattdessen kann die Event-Loop weitere anstehende Funktionsaufrufe abarbeiten.

Dieses Prinzip von »Non-blocking I/O« ist die Grundlage von Node.js, eine Plattform für serverseitiges JavaScript. Sämtliche Festplatten-, Datenbank- und Netzwerkoperationen sind dort asynchron. Das macht die Programmierung oftmals kompliziert, ermöglicht aber eine einfache Parallelisierung und Skalierung vieler Aufgaben. Während der JavaScript-Interpreter im Browser meist nur die Eingaben eines Nutzers verarbeiten muss, muss Node.js gleichzeitig tausende Nutzer bedienen. Und das ist auch möglich, denn die meiste Zeit wartet der JavaScript-Code einer Webanwendung auf die Datenbankantwort, das Netzwerk o.ä.

Mathias