fetch请求

本文探讨了JavaScript中的异步编程,从Promise、Generator函数、async/await到fetch API的使用。Promise解决了回调地狱问题,Generator允许分段执行,async函数简化了Promise的使用,fetch作为原生API提供了更简洁的请求方式,但需要注意其对错误处理、cookie处理、超时和进度监控的特性。最后提到了fetch的兼容性问题和封装策略。
摘要由CSDN通过智能技术生成

结合之前的文章事件循环Event Loop_爬行者c的博客-CSDN博客 先理解JS异步的实现机制。

异步操作结果的处理方式一般会通过回调函数来实现。关于异步编程有以下几种。

Promise

内置类。异步编程,解决回调地域

参数:一个函数,该函数接收两个函数参数,resolve和reject,且必传

三种状态:pending(进行中,默认状态)、fulfilled/resolved(已成功,异步操作成功后)和rejected(已失败,异步操作失败后)

注:

  • 状态一旦修改就不能再改变,一旦执行就无法取消。pending-->resolved/rejected
  • then方法的参数期望是函数,传入非函数则会发生值穿透。
  • then异步执行,支持链式写法。
let promise = new Promise((resolve, reject) => {
  if (true) {
    // 将成功参数返回,供then方法使用
    resolve("value");
  } else {
    // 将失败参数返回,供then方法使用
    reject("error");
  }
});

//  then 方法接收两个函数作为参数,第一个参数是 Promise 执行成功时的回调,第二个参数是 Promise 执行失败时的回调,两个函数只会有一个被调用。
promise.then(
  value => {
    // resolved时调用,value为resolve函数返回的参数
    console.log(value);
  },
  err => {
    // rejected时调用,err为reject函数返回的参数
    console.log(err);
  }
);
promise.catch(error => console.log(error));   //捕获错误

原型上的公有方法

Promise.prototype.then()
Promise.prototype.catch()
Promise.prototype.finally()

new Promise().then(res=>{}).catch(err=>{})

静态方法

Promise.resolve('a')
Promise.reject('a')
Promise.all([p1,p2,p3]]); //所有promise实例都为成功状态   返回值:新的Promise实例
Promise.race([p1,p2,p3]]); //同时发送多个请求,谁先有处理结果就返回,不管是成功还是失败(‘竞速’)

Generator函数

异步。分段执行。yield暂停执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值