dedlfix: asynchrones JavaScript

Beitrag lesen

Tach!

Du kannst auch noch die beiden ersten then()s einsparen.

Eher nach woanders verlagern.

response.json() ist kein asynchroner Prozess.

Hm, das heißt, das Parsen der JSON-Ressourcen kann nicht parallel erfolgen?

Parallel geht sowieso nichts im Single-Thread-Javascript.

Mein Gedankengang war: Angenommen, das Laden von a.json dauert 5 Sekunden, das Parsen 0.1 Sekunden. Das Laden von b.json dauert 0.1 Sekunden, das Parsen 5 Sekunden[^1]. Dann wären beide Promises gleichzeitig erfüllt und der Nutzer bekommt schnellstmöglich das Ergebnis zu sehen.

b wäre in dem Fall zuerst erfüllt, dessen Callback aufgerufen und das Parsen startet. Erst wenn das fertig ist, kann der Callback von a bearbeitet werden, dem dann sein Parsen folgt.

Eigentlich solltest du das Parsen aber nicht bemerken. So groß werden die Daten nicht sein, dass das ins Gewicht fällt. Und dann wäre der Übertragungsprozess auch noch ein viel größerer Flaschenhals.

Das kann auch im then() vom Promise.all() ausgeführt werden.

Dann würde das Parsen von b.json erst nach dem Laden von a.json beginnen; der Nutzer müsste 4.9 Sekunden länger warten. Wenn mein Gedankengang denn stimmt.

Ja. Die Idee ist gut, aber ich würde das zunächst in die Microoptimierungsschublade einsortieren, bis da was merkbares hochkommt.

Du kannst jedoch die zwei fetch() mit then() in ein requests.map() stecken, dann sparst du dir den doppelten Code und hast den zeitlichen Vorteil.

dedlfix.