【JS】fetch请求中的promise

一、如何使用 fetch 返回的 Promise 对象处理网络请求

当你使用 fetch 发起网络请求时,它会返回一个表示该请求的 Promise 对象。这个 Promise 在请求完成后会解决为一个 Response 对象,无论请求成功或失败。你可以使用 .then() 方法来访问响应的内容和状态码,以及使用 .catch() 方法来处理请求的错误。

下面是一个简单的示例,展示了如何使用 fetch 返回的 Promise 对象处理网络请求:

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json(); // 解析响应为 JSON
  })
  .then(data => {
    console.log(data); // 处理返回的数据
  })
  .catch(error => {
    console.error('There was a problem with the fetch operation:', error);
  });

在这个示例中,fetch 返回的 Promise 对象被链式地使用 .then() 方法处理成功的响应,并使用 .catch() 方法处理任何可能的网络请求错误。这种方式使得在处理异步网络请求时,可以更加清晰和方便地管理代码逻辑。

二、 res.json() or res

在 JavaScript 中处理 HTTP 请求时,特别是在使用 Fetch API 或类似的方法时,你可能会遇到在 then 方法中放置 res.json() 或者直接放置 res 的情况。这两种方式的选择取决于返回的响应类型和你希望如何处理这些响应。

  1. res.json()
  • 当使用 Fetch API 或类似的方法进行网络请求时,res.json() 用于解析响应体为 JSON 格式。
  • 如果服务器端返回的是 JSON 数据,你通常会在 then 中使用 res.json() 来处理这个 JSON 数据。
  • res.json() 返回一个 Promise,这个 Promise 在成功时会解析为一个包含 JSON 数据的 JavaScript 对象。
fetch('https://api.example.com/data')
  .then(res => res.json())
  .then(data => {
    // 处理返回的 JSON 数据
    console.log(data);
  });
  1. 直接使用 res
  • 如果你对返回的 Response 对象本身有特殊的处理需求,比如获取响应头信息、状态码等,你可以直接在 then 中使用 res
  • 这种情况下,你可以自己处理 Response 对象,而不是将其解析为 JSON 数据。
fetch('https://api.example.com/data')
  .then(res => {
    // 处理 Response 对象
    console.log(res.status);
    console.log(res.headers.get('Content-Type'));
    return res.text(); // 返回响应的文本内容
  })
  .then(text => {
    // 处理文本内容
    console.log(text);
  });

总结

  • 使用 res.json() 当你期望服务器返回的是 JSON 数据,并且你想要将其解析为 JavaScript 对象时。
  • 使用 res 当你需要对 Response 对象本身进行操作,或者希望直接处理返回的原始文本内容时。

根据你的需求和服务器返回的数据格式,选择适合的方式来处理响应数据。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
fetch请求JavaScript用于发送HTTP请求的API。它提供了一种简单、灵活的方式来与服务器进行通信,并且支持各种HTTP方法(如GET、POST、PUT、DELETE等)。 使用fetch进行请求时,你需要提供一个URL作为参数,可以选择性地添加其他配置选项,如请求方法、请求头、请求体等。fetch返回一个Promise对象,你可以使用该对象来处理响应数据。 以下是一个使用fetch进行GET请求的示例: ```javascript fetch('https://api.example.com/data') .then(response => response.json()) .then(data => { // 处理响应数据 console.log(data); }) .catch(error => { // 处理错误 console.error(error); }); ``` 在上面的示例,我们通过fetch函数发送了一个GET请求到`https://api.example.com/data`。然后,我们使用`.then()`方法处理响应对象,并将其转换为JSON格式的数据。最后,我们可以在第二个`.then()`方法处理这些数据,或者在`.catch()`方法处理错误情况。 你还可以使用其他配置选项来自定义fetch请求,例如设置请求方法、请求头、请求体等。下面是一个包含这些选项的示例: ```javascript fetch('https://api.example.com/data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'John', age: 30 }) }) .then(response => response.json()) .then(data => { // 处理响应数据 console.log(data); }) .catch(error => { // 处理错误 console.error(error); }); ``` 在上面的示例,我们使用了POST方法发送请求,并设置了请求头为`Content-Type: application/json`。我们还提供了一个包含name和age属性的JavaScript对象,并使用`JSON.stringify()`方法将其转换为JSON字符串,作为请求体发送给服务器。 这只是fetch请求的基本用法,你可以根据具体需求进行更多的配置和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凭栏听雨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值