首页 > 其他分享 >fetch的基本用法

fetch的基本用法

时间:2024-04-05 10:44:28浏览次数:22  
标签:基本 console fetch error ok 用法 data response

1. 基本的 GET 请求

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok ' + response.statusText);
    }
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('There has been a problem with your fetch operation:', error);
  });

2. 使用 Async/Await

async function fetchData(url) {
  try {
    const response = await fetch(url);
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('There has been a problem with your fetch operation:', error);
  }
}

fetchData('https://api.example.com/data');

3. 发送 POST 请求

fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    key1: 'value1',
    key2: 'value2',
  }),
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

4. 错误处理

在处理 fetch 请求时,应该检查响应的 ok 属性,它是一个布尔值,指示响应的状态码是否在 200-299 的范围内。

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('Network response was not ok');
    }
    return response.json();
  })
  .catch(error => console.error('Fetch error:', error));

5. 超时处理

fetch 原生不支持请求超时,但可以通过设置一个定时器来实现:

const fetchWithTimeout = (url, options, timeout = 7000) => {
  return Promise.race([
    fetch(url, options),
    new Promise((_, reject) =>
      setTimeout(() => reject(new Error('Timeout')), timeout)
    ),
  ]);
};

fetchWithTimeout('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

6. 使用 AbortController 取消请求

在需要取消正在进行的请求时,可以使用 AbortController

const controller = new AbortController();
const signal = controller.signal;

fetch('https://api.example.com/data', { signal })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => {
    if (error.name === 'AbortError') {
      console.log('Fetch aborted');
    } else {
      console.error('Fetch error:', error);
    }
  });

// 取消 fetch
controller.abort();

标签:基本,console,fetch,error,ok,用法,data,response
From: https://www.cnblogs.com/q98w/p/18114443

相关文章

  • 【WPF应用34】WPF基本控件-Menu的详解与示例
    WPF(WindowsPresentationFoundation)是.NET框架的一个部分,用于构建桌面应用程序的用户界面。在WPF中,菜单(Menu)是一种常用的控件,用于提供一组选项或命令,使用户可以根据自己的需要执行特定的操作。本文将详细介绍WPF中的Menu控件,包括其基本用法、属性和事件。同时,我们将通过一......
  • 【WPF应用35】深度解析WPF中的TreeView控件:功能、用法、特性与最佳实践
    WPF(WindowsPresentationFoundation)是微软推出的一个用于构建桌面应用程序的图形子系统。在WPF中,TreeView是一种常用的树形控件,用于显示层次结构的数据显示。本文将详细介绍WPF中的TreeView控件,并提供一个简单的示例。一、TreeView控件的基本概念TreeView控件用于显示一......
  • 文本处理语言awk基本语法
    文章目录运算符流程控制函数封装awk语言初步AWK是一种强大的文本处理和数据解析工具,它支持丰富的运算符和流程控制语句。运算符方面,AWK提供了基本的算术运算符(+,-,*,/,%,^,**)和赋值运算符(+=,-=,*=,/=,%=,^=),以及递增递减运算符(++,--,a++,a–)。此外,AW......
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch
    00-开始前端基础知识HTMLCSSJSHTTP等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。为何要考察扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘......
  • 基本线段树以及相关例题
    1.线段树的概念线段树是一种二叉树,也就是对于一个线段,我们会用一个二叉树来表示。这个其实就是一个线段树,我们会将其每次从中间分开,其左孩子就是左边的集合的和,其右孩子就是右边集合的和;我们可以用一个结构体tree去表示线段树的结点,tree.L代表线段树左边界,tree.R代表线段......
  • hive基本概念
    Hive一Hive基本概念1Hive简介1.1什么是HiveHive由Facebook实现并开源,是基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供HQL(HiveSQL)查询功能,底层数据是存储在HDFS上。Hive本质:将SQL语句转换为MapReduce任务运行,使不熟悉Map......
  • Linux基本指令(一)
    该文是初识Linux的文章,指令和周边基础知识为主,可供各位小白看官学习和大神看官复习,创作不易,三连一下~一、快速认识5-6个指令pwd:我们当前在Linux中所处的路径ls:罗列出当前路径下的文件名我们初学时候,文件很少,想要建立新的文件->mkdir:在当前路径下,创建新的文件夹(Linux中......
  • C++系列_02 C++程序基本结构
    C++程序的基本结构主要有三点:头文件命名空间主函数一、头文件        第一行代码“#include<iostream>”是编写主函数前必须输入的一行代码,因为他在C++程序开头,所以称为“头文件”。它是一条编译预处理命令。    iostream用于支持输入和输出操作。C++中还......
  • MySQL数据库 数据库基本操作(二):表的增删查改(上)
    1.CRUDCRUD即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写,就是数据库基本操作中针对表的一系列操作.2.新增(create)-->insert语法:insertinto表名[列名1,列名2…]values(val1,val2…)[注意]列名可以没有,如果没有列名,所......
  • 关于openEuler系统的基本环境配置(包括nginx,mysql5.7和java1.8)
    关于openEuler系统的基本环境配置(包括nginx,mysql5.7和java1.8)观前BB:openEuler虽然是国产系统,但是本质还是centos的套壳系统,你可以通过(uname-a)命令得以观察出,而且系统更类似于centos8(这个还有待确认),这就导致了安装环境的时候经常会出现奇奇怪怪的错误(比如yum找不到源什么的),本......