浅谈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入门教程(5) js Screen屏幕对象
Jan 31 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
JS提交form表单实例分析
Dec 10 Javascript
基于javascript实现图片预加载
Jan 05 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
JS敏感词过滤代码
Dec 23 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
vue-prop父组件向子组件进行传值的方法
Mar 01 Javascript
ES6基础之默认参数值
Feb 21 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连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php中使用sftp教程
2015/03/30 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
PHP概率计算函数汇总
2015/09/13 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
Vue2.5通过json文件读取数据的方法
2018/02/27 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
详解Python中的元组与逻辑运算符
2015/10/13 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
Exception类的常用方法
2012/06/16 面试题
党员自我评价分享
2013/12/13 职场文书
销售主管岗位职责范本
2014/02/14 职场文书
会员活动策划方案
2014/08/19 职场文书
贪污检举信范文
2015/03/02 职场文书
培养联系人考察意见
2015/06/01 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
Go语言特点及基本数据类型使用详解
2022/03/21 Golang