Heim >Web-Frontend >js-Tutorial >Warum gibt „response.json()' beim Abrufen ein Versprechen zurück und wie kann ich auf das Ergebnis zugreifen?

Warum gibt „response.json()' beim Abrufen ein Versprechen zurück und wie kann ich auf das Ergebnis zugreifen?

DDD
DDDOriginal
2024-12-15 17:24:13934Durchsuche

Why Does `response.json()` Return a Promise in Fetch, and How Can I Access the Result?

Einblick in Versprechen und Versprechensverkettung bei der Verarbeitung von Fetch-Antworten

Beim Experimentieren mit der fetch()-API ergab sich eine interessante Beobachtung bezüglich des Verhaltens von .json().

Beobachtung:

Bei der Rückgabe von „response.json()“ innerhalb eines an .then() übergebenen Objektliterals wird ein Promise-Objekt erhalten. Wenn es jedoch direkt vom .then()-Handler zurückgegeben wird, wird der tatsächliche Wert zurückgegeben.

Erklärung:

  • Warum funktioniert „response.json.“ ein Versprechen zurückgeben?

Der Aufruf von „response.json“ ruft ein weiteres Versprechen für den HTTP-Antworttext ab ist noch nicht geladen. Dies liegt daran, dass Sie das Antwortobjekt erhalten, sobald Header empfangen werden, der Text jedoch noch nicht verfügbar ist.

  • Warum liefert die Rückgabe des Versprechens von .then() den Wert?

Dies ist ein grundlegender Aspekt von Versprechen. Versprechen ermöglichen eine Verkettbarkeit ohne Verschachtelung, indem sie die Rückgabe von Versprechen aus Rückruffunktionen und deren anschließende Übernahme ermöglichen.

Alternative Ansätze:

Zugriff auf den Antwortstatus nach dem Warten auf den JSON body können Sie verschiedene Ansätze verfolgen:

  • Zwischenergebnisse mit verschachteltem .then() zurückgeben Ketten:

    fetch(url)
    .then(response => response.json())
    .then(data => ({
      data: data,
      status: response.status
    }))
    .then(res => {
      console.log(res.status, res.data.title);
    });
  • Asynchrone Funktionen nutzen und warten:

    const response = await fetch(url);
    const data = await response.json();
    console.log(response.status, data.title);

Achtung:

Es ist immer ratsam, den Antwortstatus zu überprüfen, bevor Sie auf den Antwortinhalt zugreifen, da dieser möglicherweise nicht immer JSON enthält Daten.

Das obige ist der detaillierte Inhalt vonWarum gibt „response.json()' beim Abrufen ein Versprechen zurück und wie kann ich auf das Ergebnis zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn