从 fetch -> promise -> response 获取数据

Posted

技术标签:

【中文标题】从 fetch -> promise -> response 获取数据【英文标题】:Get the data from fetch -> promise -> response 【发布时间】:2016-11-17 14:42:28 【问题描述】:

我正在尝试向服务器发布一些数据,但我不知道如何取回响应数据。

我有以下代码:

fetch(url, 
  method: 'POST',
  headers: 
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  ,
  body: JSON.stringify(
    email: login,
    password: password,
  )
).then(function(a)
  console.log(a);
)

它打印一个Response 它包含诸如body (ReadableByteStream)、bodyUsed (false)、ok (true)、status (200)等数据... 但我找不到我找回的数据,无处可去。当我打开 chrome 开发者控制台 - 网络时,我会在那里看到响应数据。

我做错了什么?

我一直在寻找一些关于 fetch、promise 等如何工作的资源,但我找不到任何写得好的。

【问题讨论】:

fetch Promise never gets executed的可能重复 【参考方案1】:

您可以在获取响应上调用其他方法,例如 .json().blob()。这些方法返回一个你可以调用.then()的promise。

fetch(url, 
    method: 'POST',
    headers: 
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    ,
    body: JSON.stringify(
        email: login,
        password: password,
    )
)
    .then(function (a) 
        return a.json(); // call the json method on the response to get JSON
    )
    .then(function (json) 
        console.log(json)
    )

查看some documentation on using fetch,以及其他一些关于response object works 如何在提取调用中的文档。

【讨论】:

以上是关于从 fetch -> promise -> response 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从fetch获取响应值而不是没有值的promise?

Fetch() 没有从服务器返回数据作为响应

.then() 在嵌套的 promise.all 和 fetch 完成之前执行

为啥 fetch 返回 promise 未决?

将 fetch 包装在 Promise 中有啥好处? [复制]

谈谈 Promise 以及实现 Fetch 的思路