浅谈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 相关文章推荐
jQuery切换所有复选框选中状态的方法
Jul 02 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
Jul 06 Javascript
jQuery实现的放大镜效果示例
Sep 13 Javascript
AngularJS删除路由中的#符号的方法
Sep 20 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
Nov 16 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 Javascript
利用node实现一个批量重命名文件的函数
Dec 21 Javascript
浅谈Webpack 持久化缓存实践
Mar 22 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
JavaScript接口实现方法实例分析
May 16 Javascript
浅谈JavaScript作用域
Dec 06 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
PHP测试程序运行时间的类
2012/02/05 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
在Python中使用dict和set方法的教程
2015/04/27 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
德购商城:德国进口直邮商城
2017/06/13 全球购物
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
英文版区域经理求职信
2013/10/23 职场文书
英文自荐信
2013/12/19 职场文书
班主任工作年限证明
2014/01/12 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
教师职位说明书
2014/07/29 职场文书
党员个人对照检查材料
2014/10/01 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server