为什么json()返回一个承诺?我一直在胡闹fetch()最近,API注意到了一些有点古怪的东西。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,输出但是,如果它写成:let url = "http://jsonplaceholder.typicode.com/posts/6";let iterator = fetch(url);iterator .then(response => response.json())
.then(post => document.write(post.title));;post这是一个标准Object它可以访问title属性。http://jsbin.com/wofulo/edit?js,输出所以我的问题是:为什么response.json返回对象文字中的承诺,但返回值如果刚刚返回?
3 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
为什么 response.json
还承诺?
response
.json()
如果我从 then
处理程序?
fetch(url).then(response => response.json().then(data => ({ data: data, status: response.status })).then(res => { console.log(res.status, res.data.title)}));
缥缈止盈
TA贡献2041条经验 获得超4个赞
fetch()
.then()
Promise
.then()
iterator.then(response => response.json().then(post => document.write(post.title)));
post
response.json()
.
Object
.then()
iterator.then(response => Promise.resolve({ data: response.json(), status: response.status }) .then(post => document.write(post.data)));
post
Object
Promise
data
明月笑刀无情
TA贡献1828条经验 获得超4个赞
then
如果处理程序函数:
返回一个值,然后以返回的值作为它的值来解析返回的承诺; 抛出一个错误,然后返回的承诺以抛出的错误作为其值而被拒绝; 返回一个已经解决的承诺,然后以该承诺的价值作为其价值来解决该承诺所返回的承诺;
返回一个已经被拒绝的承诺,然后返回的承诺以该承诺的值作为其价值而被拒绝。 返回另一个挂起的承诺对象,此时返回的承诺的解析/拒绝将在处理程序返回的承诺的解析/拒绝之后。此外,到那时返回的允诺的值将与处理程序返回的允诺的值相同。
添加回答
举报
0/150
提交
取消