fetch请求格式及中断方法

因为一个fetch请求中断被折磨了好久。

fetch请求格式:

Get请求:

fetch(url, {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
})
.then(response => {//响应处理
  if (!response.ok) {
    throw new Error('Network response was not ok');
  }
  return response.json();
})
.then(data => {//数据处理
  console.log('Success:', data);
})
.catch(error => {//错误处理
  console.error('Error:', error);
});

Post请求:

fetch(url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)//请求体,用来上传json数据
});

中断方法:

如果fetch请求中断,可以用AbortController来取消请求。

const controller = new AbortController();

fetch(url, {
  signal: controller.signal
});

//需要中断时调用
controller.abort();

fetch的第二个参数是对象,一般可写为options={},对象里添加请求头等参数属性。

也可以直接写为:

fetch(url, {method: 'POST',headers: {'Content-Type': 'application/json'},
signal: controller.signal});//是的,这样我就明白了,常规写法不过是换行了。

signal在options对象中应当放在headers对象之后而不是header当中,也就是说它是请求部分传递的参数。

如果写成{options,signal},这样就会报错。

fetch(url, {
  method: 'POST',
  headers: {    
    'Content-Type': 'application/json'
  },
  signal: controller.signal//在header外面
});

signal被触发后响应的事件可以这么写:

let abortornot;
signal.addEventListener('abort',
  () => abortornot=true//可以添加其他响应事件
);

关于javascript的()=>语法,它是一个箭头函数,箭头函数提供了一种更简洁的函数定义方式,特别适用于那些需要匿名函数的场景,比如回调函数、事件处理程序等。箭头函数不仅语法更简洁,而且它不会创建自己的 this 上下文,而是捕获其所在上下文的 this 值。

this.value = 1;
const myFunc = () => {
  console.log(this.value);// 1, 而不是 undefined
};

另外,fetch请求是异步的,也就是说,它不会阻塞主线程,而是返回一个 Promise 对象,当响应返回时,Promise 对象会被解析,并调用相应的 then() 或 catch() 方法。

有些语法只有在异步请求里才可以用,比如在 then() 方法里的箭头函数,因为 then() 方法里的回调函数是在异步请求完成后才执行的。

try{…}catch{…}finally{…}是用来处理请求的错误的,它可以用来捕获异步请求的错误,并在请求完成后执行一些清理工作,这个方法也可用于同步。


此方悬停
相册 小说 Ai
/*音乐播放器插件*/ /*
*/