fetch

2020-10-30  本文已影响0人  在下高姓

标签: fetch


正文

1、第一个参数是URL:
2、第二个是可选参数,可以控制不同配置的 init 对象
3、使用了 JavaScript Promises 来处理结果/回调:

fetch和ajax 的主要区别
1、fetch()返回的promise将不会拒绝http的错误状态,即使响应是一个HTTP 404或者500
2、在默认情况下 fetch不会接受或者发送cookies

读取json文件
 // 读取我们的 JSON --fetch是通过Promises回调的
async function func(){
     let response = await fetch('/article/promise-chaining/user.json');
     let user = await response.json();
 }
 
Js中fetch方法
fetch()方法定义在Window对象以及WorkerGlobalScope对象上,用于发起获取资源的请求,其返回一个Promise对象,这个Promise对象会在请求响应后被resolve,并传回Response对象。

描述#
Promise<Response> fetch(url, init)

url: 定义要获取的资源,其值可以是:

一个字符串,包含要获取资源的URL,一些浏览器会接受 blob和data作为schemes。
一个Request对象。
init: 一个配置项对象,包括所有对请求的设置。可选的参数有:

method: 请求使用的方法,如GET、POST。
headers: 请求的头信息,形式为Headers的对象或包含ByteString值的对象字面量。
body: 请求的body信息:可能是一个Blob、BufferSource、FormData、URLSearchParams或者USVString对象,注意GET或HEAD方法的请求不能包含body信息。
mode: 请求的模式,如cors、no-cors或者same-origin。
credentials: 请求的credentials,如omit、same-origin或者include,为了在当前域名内自动发送cookie,必须提供这个选项。
cache: 请求的cache模式: default、no-store、reload、no-cache、force-cache或者only-if-cached。
redirect: 可用的redirect模式: follow自动重定向,error如果产生重定向将自动终止并且抛出一个错误,或者manual手动处理重定向。
referrer: 一个USVString可以是no-referrer、client或一个URL,默认是 client。
referrerPolicy: 指定了HTTP头部referer字段的值,可能为以下值之一: no-referrer、no-referrer-when-downgrade、origin、origin-when-cross-origin、unsafe-url。
integrity: 包括请求的subresource integrity值,例如: sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=。
返回一个Promise,resolve时回传Response对象。

fetch与jQuery.ajax区别#
当接收到一个代表错误的HTTP状态码时,从fetch()返回的Promise不会被标记为 reject, 即使响应的HTTP状态码是404或500,其会将Promise状态标记为 resolve,但是返回的Promise会将resolve的返回值的ok属性设置为false,仅当网络故障时或请求被阻止时,才会标记为reject。
fetch()不会接受跨域cookies,你也不能使用fetch()建立起跨域会话,其他域的Set-Cookie头部字段将会被无视。
fetch()不会发送cookies,除非使用了credentials的初始化选项。
上一篇下一篇

猜你喜欢

热点阅读