最近我一直在搞fetch()api,並且發現了一些有點古怪的東西。爲什麼.json()在對象文字中返回承諾?
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返回一個promise對象。 http://jsbin.com/wofulo/2/edit?js,output
但是如果寫成:這裏
let url = "http://jsonplaceholder.typicode.com/posts/6";
let iterator = fetch(url);
iterator
.then(response => response.json())
.then(post => document.write(post.title));
;
後是可以訪問的標題屬性的標準對象。 http://jsbin.com/wofulo/edit?js,output
所以我的問題是:爲什麼response.json在對象字面量中返回承諾,但返回值如果剛返回?
如果響應不是有效的JSON,可能會拒絕'response.json()'承諾,這是有意義的。 – ssube
該值返回,因爲promise已經解決了在response.json()中傳遞值。現在該方法中的值可用。 –