Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnisproblem zur fetch api

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verständnisproblem zur fetch api

    Nabend,
    ich habe für meine Kundendatei im Moment 3 verschiedene Tabs „Stammdaten“, „Bankdaten“, „Lieferadressen“, wo mit der Zeit sicherlich noch mehrere Tabs hinzukommen. Die dazu gehörenden Daten sind jeweils in einer eigenen Tabelle gespeichert (also Stammdaten in Tabelle client, Bankdaten in Tabelle bankinformation und Lieferadressen in deliveryaddress).
    Meine erste Idee war es, wenn auf den Suchbutton geklickt wird, per fetch request nur die Stammdaten des Kunden zu laden und nach Erhalt der Daten diese direkt auf dem Bildschirm anzeigen zu lassen und nur wenn der User jeweils eine anderes Tab anklickt dann jeweils einen erneuten fetch request zu starten, um die dazugehörenden Daten nachzuladen und anzuzeigen.

    Dann dachte ich mir, nach dem Laden und Anzeigen der Stammdaten im Hintergrund zwei neue requests zu starten, um die Daten der beiden anderen Tabs sozusagen „vorzuladen“ um Zeit zu sparen, falls der User im Nachhinein auf einen oder gar beide der anderen Tabs klickt.

    Mein Aufbau (ich poste hier nur das Wesenliche vom Code) war zuerst der folgende :

    Code:
    async function getCustomerDetail(id) {
                    const response = await fetch(`getCustomerInfo.php?searchId=${id}`);
                    const jsonResponse = await response.json();  
                    for (let key in jsonResponse){
                                   document.getElementById(key).value=jsonResponse[key];
                    }
    … Dann Aufruf von getDeliveryAddress(id)
    … Dann Aufruf von getBankDetails(id) 
    }
    Hier habe ich ein Verständnisproblem :
    Wird der Code von getDeliveryAddress(id) erst abgearbeitet sobald ich meinen ersten Reponse erhalten habe von getCustomerInfo und mein Funtionsaufruf von getBankDetails erst aufgerufen nachdem die beiden ersten Response angekommen sind oder passiert das alles parallel, da ja die beiden anderen Funktionsaufrufe in dieser gleichen Funktion (getCustomerDetail) stehen ?

    Ich habe eben noch eine dritte Variante probiert, die anscheinend die beste sein soll :

    Code:
    await Promise.all([getCustomerDetail(id), getBankDetail(id), getDeliveryAddress(id)]);
    Was mich hier jedoch stört ist dass ich gelesen habe, sobald ein Promise fehlschlägt wird auch das Promise der anderen Anfragen abgebrochen und somit überhaupt keine Daten geliefert.
    Das Coole bei Promise.all ist aber die enorme Zeitersparnis oder ? Ist es möglich, ohne Promise.all verschiedene requests zu starten, die dann parallel laufen ?

  • #2
    erst abgearbeitet … nein
    andere Anfragen abgebrochen … nein
    promise.all -> hier solltest Du Dich mit resolve und reject beschäftigen.
    Etwas vorausschauend zu laden passt nicht in die Zeit. Jeder Request verbraucht Energie…

    Kommentar

    Lädt...
    X