I'm learning about JavaScript Fetch API and I'm a bit confusing about Promises.
Consider this dummy example that prints "ok" in the console:
fetch(".")
.then(function(response) { // first then() call
return response;
}).then(function(response) { // second then() call
console.log("ok");
});
The page about the Response Object of the Fetch API says:
The fetch() call returns a promise, which resolves with the Response object associated with the resource fetch operation.
Well, since fetch()
returns a Promise object I can understand that the first then()
call works fine because a Promise object has this method. But the Response object returned in the chained call is not a Promise object. However the second call to then()
method works!
Altering the dummy example prints undefined
in the first console.log()
:
fetch(".")
.then(function(response) { // first then() call
console.log(response.then)
return response;
}).then(function(response) { // second then() call
console.log("ok");
});
My questions is: Why this works? How the second call to then()
works since the returned object does not have this method? Is it a kind of syntax sugar?
Thanks!