dedlfix: asynchrones JavaScript

Beitrag lesen

Tach!

response.json() ist kein asynchroner Prozess.

Doch, schließlich gibt die Methode wieder einen Promise zurück.

Ok, da lag ich falsch, JSON.parse() wäre synchron. Aber so richtig asynchron wird Response.json() nicht sein.

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

Parallel geht sowieso nichts im Single-Thread-Javascript.

Der Browser parst JSON auch nicht im JavaScript-Thread. Das kann in einem anderen Thread erfolgen. Währenddessen kann anderes JavaScript ausgeführt werden, anderes Parsing erfolgen usw. Natürlich muss Code, der auf den Promise wartet, auf das Parsingergebnis warten.

Das glaube ich jedoch nicht, dass extra für das Parsen ein Thread aufgemacht wird. Das wäre bei kleinen Mengen zu parsendem Code viel zu aufwendig. Und dann müsste dieses Handling eine andere Implementation haben als JSON.parse().

Daher halte ich Gunnar's Lösung für angemessen.

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.

Das stimmt.

An der Stelle meinte ich das übrigens so: Das Parsen findet vermutlicherweise direkt im Anschluss an den Callback statt und falls in der Zeit der zweite Request fertig wird, muss dessen Callback sich in der Event-Loop anstellen. Den zeitlichen Vorteil hat man nur zu dem Teil, der vor dem Eintreffen der Response fertig ist.

Das ist meine Mutmaßung, und wahrscheinlich wird das sowieso nicht relevant werden, weil alles wegen zu geringer Datenmengen im Grundrauschen untergeht. Deshalb halte ich auch Aufwand für vertane Zeit, das genauer zu untersuchen zu wollen.

dedlfix.