当前位置: 首页 > news >正文

做网站在哪个地方买空间网络营销做得好的品牌

做网站在哪个地方买空间,网络营销做得好的品牌,注册域名需要什么,给wordpress替换主题大厂面试题分享 面试题库前后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库问题之前在业务上有这样一个场景,通过 script 标签动态引入了一个外部资源,具体方式是这样的const script document.…

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

问题

之前在业务上有这样一个场景,通过 script 标签动态引入了一个外部资源,具体方式是这样的

const script = document.createElement('script');
script.src = 'xxx';
script.async = true;
document.body.appendChild(script);
复制代码

最近发现在某些情况下需要取消这个请求,因此对取消script标签发出的请求的方法进行研究。

取消请求的几种方式

取消 XMLHttpRequest 请求


// 发送请求const xhr = newXMLHttpRequest();
xhr.open('GET', url, true);
xhr.send();
// 1s后取消请求的两种方法// a. 设置超时时间属性,在 IE 中,超时属性可能只能在调用 open()方法之后且在调用 send()方法之前设置。
xhr.timeout = 1000;
// b. 利用abort方法setTimeout(() => {xhr.abort();
}, 1000);
复制代码

取消 fetch 请求


fetch请求的取消主要依赖于AbortController对象,当fetch 请求初始化时,我们将 AbortSignal 作为一个选项传递进入请求的选项对象中(下面的 {signal})。

const controller = newAbortController();
fetch(url, { signal: controller.signal });
// 1s后取消请求setTimeout(() => {controller.abort();
}, 1000);
复制代码

取消 axios 请求


取消 axios 请求同样依赖于 AbortController 对象。

const controller = newAbortController();
axios.get(url, { signal: controller.signal });
// 1s后取消请求setTimeout(() => {controller.abort();
}, 1000);
复制代码

取消使用script标签

通过对网上的资料进行整理,并没有发现直接取消 script 标签发起的请 求的方法。并且当请求发出后对 script 进行的操作(如删除 dom 节点)也不会造成影响。那么能不能将 script 发起的请求改为使用以上三种方法之一来实现呢?

改为 fetch 方法


我首先尝试了 fetch 方法。通过使用 fetch 方法对网址进行请求,我发现请求得到的类型是一个 ReadableStream 对象。

MDN上提供了一种方法可以获取到 ReadableStream 对象中的内容:

fetch('https://www.example.org').then((response) => response.body).then((rb) => {const reader = rb.getReader();returnnewReadableStream({start(controller) {// The following function handles each data chunkfunctionpush() {// "done" is a Boolean and value a "Uint8Array"reader.read().then(({ done, value }) => {// If there is no more data to readif (done) {console.log('done', done);controller.close();return;}// Get the data and send it to the browser via the controllercontroller.enqueue(value);// Check chunks by logging to the consoleconsole.log(done, value);push();});}push();},});}).then((stream) =>// Respond with our streamnewResponse(stream, { headers: { 'Content-Type': 'text/html' } }).text()).then((result) => {// Do things with resultconsole.log(result);});
复制代码

使用这种方法我就通过 fetch 方法获取到了原来 script 标签请求的内容,也就可以使用 AbortController 来控制请求的取消。

改为 XMLHttpRequest 方法


尝试使用 fetch 方法解决问题之后,我又对 XMLHttpRequest 进行了尝试,发现这种方法更加简便,获取的请求内包含一个 responseText 字段就是我需要的内容,并且在请求未成功或尚未发送的情况下这个值为 null ,也就更方便进行请求是否成功的判断。

结论

对于 script 标签发出的请求我们无法取消,但是我们可以通过其他的方法来达到 script 标签的效果,因为 XMLHttpRequest 已经足够简便,我就没有对 axios 进行尝试,相信也肯定可以达到同样的目标,有兴趣的同学可以尝试一下。

大厂面试题分享 面试题库

前后端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

http://www.yayakq.cn/news/922334/

相关文章:

  • 河南定制网站建设报价北京智能建站系统价格
  • 平台网站建设有哪些wordpress 遍历分类
  • 网站产品后台界面怎么做南通快速建设网站服务
  • 牡丹江建设工程信息网站郑州市主城区
  • alexa排名分析昆明搜索引擎的关键词优化
  • 建设自己的网站做像素画的网站
  • 营销网站模板html公司用于做网站的费用怎么做账
  • 网站建设新报价图片欣赏wordpress 商城聊天
  • 外贸型网站开发代还app开发公司
  • 大连网站搜索优网站建设方案项目背景意义
  • win7架设asp网站wordpress未收到数据库
  • 网站建设与规划实验心得体会郑州市做网站公司
  • 重庆企业网站优化报告范文大全
  • 外贸网站的推广方法企业策划推广公司
  • 上海手机端建站模板wordpress搭建tag页面
  • 做网站建设的公司有哪些内容百度应用app
  • 晋州做网站的联系电话免费网站服务器软件下载大全
  • 邢台市建设工程质量监督网站上海公司注册代理服务
  • 网站建设的简历前端一个页面多少钱
  • 无限动力营销型网站建设WordPress 将您重定向的次数过多
  • wordpress怎么上传网站网站建设yingkagou
  • 那个网站做代买门户网站的基本功能
  • 网站品牌推广设计受大众喜欢的域名备案加急
  • 无锡做网站哪里好wordpress同步微博评论
  • 网站搭建素材职业做网站游戏的
  • 南宁共建站公司网站设计是不是一次性收费的
  • 老李网站建设网站开发的资料设备
  • 杭州市下城区建设厅网站杭州市网站推广
  • 网站开发前后端分离是主流吗平面设计素材网站哪个好
  • 有什么做海报的网站吗福田网站设计公司