合抱之木生于毫末,九层之台起于累土,千里之行始于足下

新一代网络交互能力——FetchAPI


新一代网络交互能力——FetchAPI

我们都知道原生了XMLHttpRequest是一个非常难用的API,不仅需要通过属性去判断请求当前所处的状态,还要按照一定的顺序规则去书写,保证写法能在所有浏览器都兼容,这大大提高了我们的心智负担。为了更好地使用XMLHttpRequest,有很多优秀的开源库也应运而生。开源库虽好,但毕竟会增大我们的静态资源包的大小。

今天我要介绍的就是浏览器原生支持的新一代网络交互能力——FetchAPI。FetchAPI采用了全新的架构设计,支持的环境也更加丰富(除了主页面工作线程外,还包括了模块和工作线程,如WebWorker、ServiceWorker等场景)。同时,FetchAPI采用较现代的Promise接口方案,在使用上也更加方便。

涉及的知识点

FetchAPI与XMLHttpRequest的区别

FetchAPI与XMLHttpRequest都是用于异步请求的工具。既然已经有了XMLHttpRequest,为什么还要出来一个原生的FetchAPI呢?今天我们就来讲讲他们之间的区别。

FetchAPIXMLHttpRequest
使用难易度简单复杂
支持同步
支持异步
支持主页面线程中使用
支持模块和工作线程中使用
支持Promise
支持事件监听
支持跨域
支持取消请求
支持超时
支持进度

注意超时功能进度读取功能虽然不是原生提供,但可以通过Fetch现有API实现。

相比较而言,虽然在超时进度读取这两项不常用的能力上,FetchAPI需要稍微费点神之外,FetchAPI的优点还是非常明显的,尤其在使用上尤为突出。FetchAPI采用Promise的方案,使得其操作方式更加现代,写法更加简洁,另外,FetchAPI除了能在主页面线程上能使用外,还能在类似WebWorker、ServiceWorker等环境中使用。

FetchAPI的使用

FetchAPI的核心

如何实现超时功能和进度功能