如今,Fetch API已经成为现在浏览器异步网络请求的标准方法,但Fetch也是有弊端的,比如: Fetch还没有方法终止一个请求,而且Fetch无法检测上传进度

现在我们可以通过 AbortControllerAbortSignal 来终止,代码如下:

const controller = new AbortController()

const signal = controller.signal

fetch('./data.json', { signal })

可以通过controller.abort()来通知终止事件,比如,你可以在请求发出后3秒来终止请求

setTimeout(() => { controller.abort(); }, 3 * 1000);

如果请求完成了,调用absort()不会发生错误

如果请求没有完成,那么Fetch就会抛出一个DOMException异常,异常的name属性值为"AbortError",可以在promise中的catch捕获这个异常

例如:  fetch('./data.json', { signal })

.then((res) => {})

.catch((err) => {

if (err.name === 'AbortError') {

console.log('Fetch aborted');

} else {

console.log('Another error');

}

})

最新文章

  1. yii2下拉框带搜索功能
  2. NodeJs框架
  3. java 23种设计模式及具体例子 收藏有时间慢慢看
  4. unity中的欧拉角
  5. Cocos2d-x 3.1 内存管理机制
  6. Large-Scale Deployment of SharePoint Team Services
  7. Ora-12154:无法解析连接字符串
  8. 老oj曼哈顿最小生成树
  9. android 模拟微信消息 OnItemClickListener()方法 [3]
  10. 2015第15周六Java线程池
  11. 表单提交---前端页面模拟表单提交(form)
  12. MySQL数据备份和恢复
  13. 使用JsonConfig控制JSON lib序列化
  14. python文件转exe
  15. Docker: 基础介绍 [一]
  16. js判断输入的input内容是否为数字
  17. java为什么匿名内部类的参数引用时final(转)
  18. #Leetcode# 725. Split Linked List in Parts
  19. 前端学习 -- Html&Css -- 相对定位 绝对定位 固定定位
  20. PyQT5-QPushButton切换按钮

热门文章

  1. 一步步Cobol 400 上手自学入门教程03 - 数据部
  2. odoo开发笔记--odoo可用小图标
  3. Identity Server4学习系列三
  4. 全网最详细的CentOS7里如何安装MySQL(得改为替换安装MariaDB)(图文详解)
  5. JLS中表达式的所有文法
  6. linux下更改时区
  7. OOAD理论知识小结
  8. Java subList、toArray、asList 注意点
  9. 一个Time TodoList实例了解redux在wepy中的使用
  10. [转]【mysql监控】查看mysql库大小,表大小,索引大小