Verstehen des Promise-Handlings in Fetch()
Beim Arbeiten mit der fetch()-API von JavaScript kann bei der Verwendung von .json ein unerwartetes Verhalten auftreten ()-Methode. In diesem Artikel wird erläutert, warum .json() in bestimmten Szenarien ein Versprechen zurückgibt und in anderen nicht.
Warum sich das Verhalten von Versprechen unterscheidet
Die Methode .json() löst ein aus Promise-Objekt, um den Antworttext abzurufen und ihn als JSON zu analysieren. Dies liegt daran, dass der Hauptteil einer HTTP-Antwort nicht sofort verfügbar ist. Daher gibt die .json()-Methode ein Promise zurück, das aufgelöst wird, wenn der Körper verfügbar wird.
Wenn das Promise-Objekt jedoch direkt vom .then()-Handler zurückgegeben wird, wie zum Beispiel in:
fetch(url) .then(response => response.json())
Der zurückgegebene Wert ist kein Versprechen. Versprechen werden nicht auf unbestimmte Zeit in .then()-Handlern eingeschlossen. Stattdessen wird der zugrunde liegende Wert zurückgegeben, sodass die Kette asynchroner Vorgänge fortgesetzt werden kann.
Wertzugriff über zurückgegebenes Versprechen
Im Gegensatz dazu, wenn das Promise-Objekt darin eingebettet ist ein zurückgegebenes Objekt, wie zum Beispiel:
fetch(url) .then(response => { return { data: response.json(), status: response.status } })
Der vom .then()-Handler zurückgegebene Wert bleibt ein Versprechen. Dies liegt daran, dass ein neues JavaScript-Objekt erstellt wird und die Methode .json() innerhalb ihres Gültigkeitsbereichs aufgerufen wird. Das resultierende Promise wird der Dateneigenschaft des zurückgegebenen Objekts zugewiesen.
Alternative Ansätze
Um auf den Antwortstatus und die JSON-Daten in einem .then()-Handler zuzugreifen, Die folgenden Ansätze können verwendet werden:
Fazit
Das Verständnis des Promise-Verhaltens der .json()-Methode und ihrer Interaktion mit .then()-Handlern ist für eine effektive Asynchronität von entscheidender Bedeutung Programmierung mit der fetch() API. Durch die Nutzung der Flexibilität von Promises können Entwickler eine effiziente Verarbeitung von HTTP-Antworten sicherstellen und unnötige Verschachtelungen asynchroner Vorgänge vermeiden.
Das obige ist der detaillierte Inhalt vonWarum gibt fetch().then().json() manchmal ein Versprechen zurück und manchmal nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!