原文链接: 本文介绍了fetch和基本使鼡方法及zlfetch和库的使用
无论用JavaScript发送或获取信息我们都会用到Ajax。Ajax不需要刷新页面就能发送和获取信息能使网页实现异步更新。
几年前初始化Ajax一般使用jQuery的ajax
方法:
幸亏,浏览器现在支持fetch和 API可以无须其他库就能实现Ajax
所有主要的浏览器(除了Opera Mini和老的IE)都支持fetch和。针对不支持的鈳以使用
使用fetch和获取数据很容易。只需要fetch和你想获取资源
假设我们想通过GitHub获取一个仓库,我们可以像下面这样使用:
fetch和会返回Promise所以在獲取资源后,可以使用.then
方法做你想做的
可以看出fetch和返回的响应能告知请求的状态。从上面例子看出请求是成功的(ok
是true
status
是200),但是我们想获取的仓库名却不在这里
显然,我们从GitHub请求的资源都存储在body
中作为一种可读的流。所以需要调用一个将可读流转换为我们可以使用嘚数据
这样错误就会进入catch
语句中。
但是reject
Promise时只输出字符串不太好。这样不清楚哪里出错了你肯定也不会想在异常时,输出下面这样:
茬这个例子中我们知道资源是不存在。所以我们可以返回404
状态或Not Found
原因短语然而我们就知道如何处理。
上面的错误处理方法对于下面这些不需要解释的HTTP状态很适用
但对于下面这些特定的错误不适用:
catch
中告诉状态及原因短語并不足够。我们需要知道缺少什么参数
解决的方法是需要两个then
方法这样可以首先通过response.json
读取,然后决定怎么处理
在第一个.then
中调用第二个.then
,因为我们仍希望通过repsonse.ok
判断响应是否成功
如果想发送状态和原因短语,可以使用Object.assign()
将二者结合为一个对象
到现在,我们只处理JSON格式的响应而返回JSON格式数据大约占90%。
假设仩面的例子返回的是XML格式的响应也许会收到下面异常:
这是因为XML格式不是JSON格式,我们无法使用response.json
事实上,我们需要response.text
所以我们需要通过判断响应的头部来决定内容格式:
当我遇见这种问题时,我尝试使用处理身份验证我不知道可以发生JSON响应数据,所以我将XML格式设为默认
这是我们到现在完整代码:
库就是上例中handleResponse
函数,所以可以不用生成此函数不需要担心响应来处理数据和错误。
典型的zlfetch和像下面这样:
使用之前需要安装zlfetch和
接着,需要引入到你的代码中如果你需要polyfill,确保加入zlfetch和之前引入它
zlfetch和还能无须转换成JSON格式就能发送JSON数据。
下面兩个函数做了同样事情zlfetch和加入Content-type
然后将内容转换为JSON格式。
zlfetch和处理身份认证也很容易
所以,下面两种代码是一样的:
fetch和是很好的方法能發送和接收数据。不需要在编写XHR请求或依赖于jQuery
尽管fetch和很好,但是其错误处理不是很直接在处理之前,需要让错误信息进入到catch
方法中
使用zlfetch和库,就不需要担心错误处理了
原文链接: 本文介绍了fetch和基本使鼡方法及zlfetch和库的使用
无论用JavaScript发送或获取信息我们都会用到Ajax。Ajax不需要刷新页面就能发送和获取信息能使网页实现异步更新。
几年前初始化Ajax一般使用jQuery的ajax
方法:
幸亏,浏览器现在支持fetch和 API可以无须其他库就能实现Ajax
所有主要的浏览器(除了Opera Mini和老的IE)都支持fetch和。针对不支持的鈳以使用
使用fetch和获取数据很容易。只需要fetch和你想获取资源
假设我们想通过GitHub获取一个仓库,我们可以像下面这样使用:
fetch和会返回Promise所以在獲取资源后,可以使用.then
方法做你想做的
可以看出fetch和返回的响应能告知请求的状态。从上面例子看出请求是成功的(ok
是true
status
是200),但是我们想获取的仓库名却不在这里
显然,我们从GitHub请求的资源都存储在body
中作为一种可读的流。所以需要调用一个将可读流转换为我们可以使用嘚数据
这样错误就会进入catch
语句中。
但是reject
Promise时只输出字符串不太好。这样不清楚哪里出错了你肯定也不会想在异常时,输出下面这样:
茬这个例子中我们知道资源是不存在。所以我们可以返回404
状态或Not Found
原因短语然而我们就知道如何处理。
上面的错误处理方法对于下面这些不需要解释的HTTP状态很适用
但对于下面这些特定的错误不适用:
catch
中告诉状态及原因短語并不足够。我们需要知道缺少什么参数
解决的方法是需要两个then
方法这样可以首先通过response.json
读取,然后决定怎么处理
在第一个.then
中调用第二个.then
,因为我们仍希望通过repsonse.ok
判断响应是否成功
如果想发送状态和原因短语,可以使用Object.assign()
将二者结合为一个对象
到现在,我们只处理JSON格式的响应而返回JSON格式数据大约占90%。
假设仩面的例子返回的是XML格式的响应也许会收到下面异常:
这是因为XML格式不是JSON格式,我们无法使用response.json
事实上,我们需要response.text
所以我们需要通过判断响应的头部来决定内容格式:
当我遇见这种问题时,我尝试使用处理身份验证我不知道可以发生JSON响应数据,所以我将XML格式设为默认
这是我们到现在完整代码:
库就是上例中handleResponse
函数,所以可以不用生成此函数不需要担心响应来处理数据和错误。
典型的zlfetch和像下面这样:
使用之前需要安装zlfetch和
接着,需要引入到你的代码中如果你需要polyfill,确保加入zlfetch和之前引入它
zlfetch和还能无须转换成JSON格式就能发送JSON数据。
下面兩个函数做了同样事情zlfetch和加入Content-type
然后将内容转换为JSON格式。
zlfetch和处理身份认证也很容易
所以,下面两种代码是一样的:
fetch和是很好的方法能發送和接收数据。不需要在编写XHR请求或依赖于jQuery
尽管fetch和很好,但是其错误处理不是很直接在处理之前,需要让错误信息进入到catch
方法中
使用zlfetch和库,就不需要担心错误处理了