Warum nicht .json() zurück, ein Versprechen?

Ich ve wurde Herumspielen mit der fetch() api vor kurzem, und bemerkte etwas, das war ein bisschen schrullig.

let url = "http://jsonplaceholder.typicode.com/posts/6";

let iterator = fetch(url);

iterator
  .then(response => {
      return {
          data: response.json(),
          status: response.status
      }
  })
  .then(post => document.write(post.data));
;

post.data gibt eine Promise Objekt.
http://jsbin.com/wofulo/2/edit?js,Ausgabe

Aber wenn es geschrieben wird:

let url = "http://jsonplaceholder.typicode.com/posts/6";

let iterator = fetch(url);

iterator
  .then(response => response.json())
  .then(post => document.write(post.title));
;

post hier ist ein standard - Object die Sie Zugriff auf das title-Attribut.
http://jsbin.com/wofulo/edit?js,Ausgabe

Also meine Frage ist: warum tut response.json Gegenzug ein Versprechen in ein Objekt-literal, sondern geben den Wert zurück, wenn nur zurückgegeben?

Das macht Sinn, wenn man bedenkt, das response.json() Versprechen kann abgelehnt werden, wenn die Antwort nicht gültig ist JSON.
Der Wert, der zurückgegeben wird, weil Versprechen wurde behoben, übergibt den Wert in der Antwort.json(). Jetzt wird der Wert steht in den then-Methode.

InformationsquelleAutor haveacigaro | 2016-05-31

Schreibe einen Kommentar