获取资源很简单,发起一个请求出去,一个响应进来,然后该怎么操作就怎么操作。
fetch 的 api 使用的是 promise 规范,不会 promise(用于延迟(deferred) 计算和异步(asynchronous ) 计算。 一个 Promise 对象代表着一个还未完成,但预期将来会完成的操作。主要使用它处理回调黑洞。) 的请花几分钟学习一下。
使用 fetch 去获取数据的方式:
fetch("服务器地址") .then(function(response) { //将获取到的数据使用 json 转换对象 return response.json(); }) .then(function(data) { //获取转换后的格式 console.log(data); }) //如果有异常会在 catch 捕获 .catch(function(e) { console.log("error"); });
有没有发现使用 fetch 后代码变优美了,不关心数据怎么请求的,把更多的精力放在处理数据上。
不用写回调函数了,也不用监听 xhr readystatechange 事件了,当数据请求回来后会传递给 then, 有异常就会直接触发 catch 事件。
fetch 默认发起的是 get 请求,如果需要 post 请求需要设置 Request
Request
Request 客户端向服务器发出请求的一个对象,包括用户提交的信息以及客户端的一些信息
使用 Request 构造一个 fetch 请求的对象的详细信息
//实例化 request 对象 var myRequest = new Request(url, Option); fetch(myRequest) .then(function(response) { console.log(response); }) //如果有异常会在 catch 捕获 .catch(function(e) { console.log("error"); });
Request 详细参数配置:
method
设置请求方式
method = GET / POST / PUT / DELETE / HEAD
headers
设置请求头信息,使用 Headers 对象
let headers = new Headers({ 'Content-Type': 'text/plain' });
mode
请求的模式,主要用于跨域设置
mode = cors / no-cors / same-origin
cors : 跨域
no-cors : 不跨域
same-origin : 同源
credentials
需要向服务器发送 cookie 时设置
credentials = omit / same-origin
omit : 省略
same-origin : 发送同源 cookie
cache
cache = default / reload / no-cache
redirect
收到重定向消息时如何处理
redirect = follow / error / manual
follow : 跟随重定向的地址 ,继续请求
error : 不请求
比如:
var request = new Request("url", { headers: new Headers({ "Content-Type": "text/plain" }), method : "POST", mode: "cors", redirect : "follow" }); fetch(request) .then((response) => { console.log(response); }) .catch((error)=>{ console.log(error); });
fetch 数据处理
当 fetch 把请求结果拿到后,我们需要使用它提供的几个方法来做处理
json
fetch 提供了一个 json 方法将数据转换为 json 格式
fetch(url) .then((response) => { //返回 object 类型 return response.json(); }) .then((result) => { console.log(result); });
text
fetch 提供了一个 text 方法用于获取数据,返回的是 string 格式数据
fetch(url) .then((response) => { //返回 string 类型 return response.text(); }) .then((result) => { console.log(result); });
blob
如果我们获取的是一个图像,需要先设置头信息,然后 fetch 会正常处理本次请求,最终使用 blob 方法获取本次请求的结果, 可以把结果赋值给 img src 就能正常的显示一张图片
var request = new Request("xx.img", { headers: new Headers({ "Content-Type": "image/jpeg" }), method : "get", cache: 'default' }); fetch(request) .then((response) => { return response.blob(); }) .then((stories)=>{ var objectURL = URL.createObjectURL(stories); let img = document.createElement("img"); img.src = objectURL; document.querySelector("body").appendChild(img); });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】
- 陈思安.1990-国语钢琴酒吧5CD【欣代唱片】【WAV+CUE】
- 莫文蔚《莫后年代20周年世纪典藏》3CD[WAV+CUE][2G]
- 张惠妹《我要快乐》华纳[WAV+CUE][1G]
- 罗大佑1982《之乎者也》无法盗版的青春套装版 [WAV+CUE][1G]
- 曾庆瑜1989-款款柔情[日本东芝版][WAV+CUE]
- Scelsi-IntegraledesquatuorsacordesetTrioacordes-QuatuorMolinari(2024)[24bit-WAV]
- 房东的猫2017-房东的猫[科文音像][WAV+CUE]
- 杨乃文.2016-离心力(引进版)【亚神音乐】【WAV+CUE】