为什么HTTP第二个请求会把第一个请求覆盖?

不知大家是否也有这样的疑惑呢?

如在B站上看视频的话,我当前看的是p1,然后我点p2,在网速慢的情况下,js异步请求还没传回数据的时候,我又点击p3,为什么p2请求的数据没有呈现,使页面播放p2,而是直接播放p3?

本循着探寻的精神,我也不知道它到底是如何实现的,直到我看到了这个文章。
axios,二次请求的时候,取消第一次请求
在这里插入图片描述

通过检查b站页面li的click绑定事件,发现调用函数,通过源码检测,推断是通过这种请求拦截和响应拦截实现的。 在这里插入图片描述
在这里插入图片描述
2、接下来我通过自己写的简易服务器来测试一下,不应用这种功能浏览器会不会展示第一次请求,然后再用第二次请求的数据将其覆盖。我先用node搭建了一个服务器,一切从简。监听端口为12452。

在这里插入图片描述
进入chrome浏览器,访问http://localhost:12452/,展示只有两个a标签的链接,进入开发者工具,将网速调整为slow 3G,先点击文本,再快速点击图片,并没有我们预想的先出现文本,再向图片刷新。当点击文本时,主页面下的favicon请求状态码从(pending)转变为(canceled)(注:服务器没有为页面设置图标,该请求没有回应,为pending),同时b请求,状态码为(pending),点击图片后,b请求状态码为(canceled),最后浏览器页面加载完成,如下图所示。在这里插入图片描述

综上1,2:

浏览器拥有取消上次请求的插件,同时也可以用请求和响应拦截来实现覆盖第一次请求。