浅谈Fetch 数据交互方式


Posted in Javascript onDecember 20, 2018

获取资源很简单,发起一个请求出去,一个响应进来,然后该怎么操作就怎么操作。

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);

  });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中使用replace结合正则实现replaceAll的效果
Jun 04 Javascript
javascript 实现键盘上下左右功能的小例子
Sep 15 Javascript
javascript比较两个日期相差天数的方法
Jul 24 Javascript
jQuery解析json格式数据简单实例
Jan 22 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
Mar 30 Javascript
基于Angularjs实现分页功能
May 30 Javascript
a标签置灰不可点击的实现方法
Feb 06 Javascript
canvas实现弧形可拖动进度条效果
May 11 Javascript
JavaScript实现自动跳转文本功能
May 25 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
新手vue构建单页面应用实例代码
Sep 18 Javascript
使用Angular 6创建各种动画效果的方法
Oct 10 Javascript
cocos2dx+lua实现橡皮擦功能
Dec 20 #Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 #Javascript
fetch 如何实现请求数据
Dec 20 #Javascript
JS闭包经典实例详解
Dec 20 #Javascript
JS闭包原理与应用经典示例
Dec 20 #Javascript
Mint UI组件库CheckList使用及踩坑总结
Dec 20 #Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
Dec 20 #Javascript
You might like
JAVA/JSP学习系列之六
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
学习php分页代码实例
2013/10/24 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
JavaScript中常用的运算符小结
2012/01/18 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
layui 弹出层回调获取弹出层数据的例子
2019/09/02 Javascript
JS实现密码框效果
2020/09/10 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python交换两个变量的值方法
2019/01/12 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
介绍一些UNIX常用简单命令
2014/11/11 面试题
青年文明号事迹材料
2014/01/18 职场文书
比赛口号大全
2014/06/10 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
毕业生实习证明
2014/09/19 职场文书
单位租房协议书范本
2014/12/04 职场文书
2016春节慰问信范文
2015/03/25 职场文书
户外亲子活动总结
2015/05/08 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python