fetch()的用法

发起获取资源请求的我们一般都会用AJAX技术,最近在学习微信小程序的时候,用到了fetch()方法。

fetch()方法用于发起获取资源的请求。它返回一个promise,这个promise会在请求响应之后被resolve,并传回Response对象,基本上在任何场景下只要你想获取资源,都可以使用fetch()方法,但是现在存在兼容性的问题,查看兼容性:http://caniuse.com/#search=fetch()

当遇到网络错误是,fetch()返回的promise会被reject(阻止),并传回TypeError;成功的fetch()检查不仅要包括promise被解析,还要包括Response.ok属性为true.Http 404状态并不被认为是网络错误

一:语法

  

fetch(input, init).then(function(response) {...})

  参数:

    input:要获取的资源,可能是字符串(包含要获取资源的url),也可能是Request对象

    init:

      method:请求使用的方法,如:POST/GET

      headers:请求头信息,可能是字符串,也有可能是Header对象

      body:请求的body信息:可能是 Blod/BufferSource/FormData/URLSearchParam或者是字符串

      mode:请求模式:cors /no-cors/same-origin

      credentials:请求的credentials

      cache:请求的cache模式:default,no-store,reload,no-cache,force-cache ,only-if-cached

  返回值:一个Promise,解析时传回Response对象

  示例1:比如说在百度页面打开控制台,

  输入:

fetch("https://www.baidu.com").then(function(response){console.log(response)})

  

示例2:

var myImage = document.querySelector(‘img‘);
var myRequest = new Request(‘flowers.jpg‘);
fetch(myRequest).then(function(response){
   return response.blob();
}).then(function(response){
   var objectURL = URL.createObjectURL(response);
   myImage.src = objectURL;
})

  下面的是有init参数的

  

var myImage = document.querySelector("img");
var myHeaders = new Headers();
myHeaders.append("Content-Type","image/jpeg");

var myInit = {
  method: "GET",
  headers: myHeaders,
  mode: ‘cors‘,
  cache: "default"
}
var myRequest = new Request("flowers.jpg");

fetch(myRequest, myInit).then(function(response){
   return response.blob();
}).then(function(response){
  var objectURL = URL.createObjectURL(response);
  myImage.src = objectURL;
})

  URL.createObjectURL()静态方法会创建一个DOMString,她的URL表示参数中的对象。这个URL的声明周期和创建她的窗口中的document绑定。这个新的URL对象表示着指定的FILR对象或者是Blob对象

语法: objectURL = URL.createObjectURL(blob)

  参数:用来创建URL的File对象或者是Blob对象

  每次调用createObjectURL()方法时,都会创建一个新的URL对象,即使已经用相同的对象作为参数创建过。当不再使用这些URL对象时,每个对象必须通过调用 URL.revokeObjectURL() 方法来释放。浏览器会在文档退出的时候自动释放它们,但是为了获得最佳性能和内存使用状况,你应该在安全的时机主动释放掉它们。

  

时间: 2024-10-25 13:43:14

fetch()的用法的相关文章

ajax与fetch的用法

// 传统ajax用法 var xhr = new XMLHttpRequest(); xhr.responseType = 'json'; xhr.timeout = 2000; console.log(xhr.readyState);//0 xhr.open('GET', url); console.log(xhr.readyState);//1 xhr.onloadstart = function (e) { xhr.abort(); console.log(e); }; xhr.onpr

[转] 学会fetch的用法

fetch是web提供的一个可以获取异步资源的api,目前还没有被所有浏览器支持,它提供的api返回的是Promise对象,所以你在了解这个api前首先得了解Promise的用法.参考阮老师的文章 那我们首先讲讲在没有fetch的时候,我们是如何获取异步资源的: //发送一个get请求是这样的: //首先实例化一个XMLHttpRequest对象 var httpRequest = new XMLHttpRequest(); //注册httpRequest.readyState改变时会回调的函数

git clone, push, pull, fetch 的用法

Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作. git clone git remote git fetch git pull git push 本文针对初级用户,从最简单的讲起,但是需要读者对Git的基本用法有所了解.同时,本文覆盖了上面5个命令的几乎所有的常用用法,所以对于熟练用户也有参考价值. git 一.git clone

fetch的用法

1.重构公司的后台项目,偶然间在git上看见别人的项目中用到fetch,查了下才知道是ES6的新特性,和ajax的功能相似,都是实现请求,但是多少有些兼容性问题. (1)fetch和XMLHttpRequest fetch就是XMLHttpRequest的一种替代方案,除了XMLHttpRequest对象来获取后台的数据之外,还可以使用一种更优的解决方案fetch. (2)如何获取fetch https://developer.mozilla.org/zh-CN/docs/Web/API/Fet

Hibernate fetch 抓取策略

上一篇文章(Hibernate的延迟加载 ,懒加载,lazy)说到Hibernate的延迟加载跟fetch的配置还有一定关系,下面就来讨论下fetch的用法. 抓取策略(fetch)是指当我们去查询一个对象里面所关联的其他对象时,按照哪种方法去抓取关联对象. fetch策略一共有四种:select.subselect.join.batch,下面我们一一介绍.我们还是用上面介绍延迟加载的相关表和实体类. Company表: Employee表(employee_company_id为外键) Com

git fetch和push的区别

获取fetch的用法 git-fetch用于从另一个reposoitory下载objects和refs. 命令格式为:git fetch … 其中表示远端的仓库路径.git remote add origin [email protected]:schacon/simplegit-progit.git 其中的标准格式应该为:,表示远端仓库的分支,如果不为空,则表示本地的分支:如果为空,则使用当前分支. git fetch /home/bob/myrepo master:bobworks :用于从

fetch和XMLHttpRequest讲解

写在前面 fetch 同 XMLHttpRequest 非常类似,都是用来做网络请求.但是同复杂的XMLHttpRequest的API相比,fetch使用了Promise,这让它使用起来更加简洁,从而避免陷入"回调地狱". 两者比较 比如,如果我们想要实现这样一个需求:请求一个URL地址,获取响应数据并将数据转换成JSON格式.使用fetch和XMLHttpRequest实现的方式是不同的. 使用XMLHttpRequest实现 使用XMLHttpRequest来实现改功能需要设置两个

PHP PDO操作MYSQL

PHP PDO操作MYSQL 学习要点: 1.        PHP PDO配置 2.        连接mysql及异常处理 3.        query,exec用法详解 4.        预处理prepare()用法详解 5.        PDO错误处理模式和事务处理 6.        获取和遍历结果集 7.        常用函数说明   我的博客:http://www.unitbuy.com PDO配置 PHP 数据对象 (PDO) 扩展可以支持绝大多数的主流的数据库,如下 C

Python爬虫框架Scrapy 学习笔记 6 ------- 基本命令

1. 有些scrapy命令,只有在scrapy project根目录下才available,比如crawl命令 2 . scrapy genspider taobao http://detail.tmall.com/item.htm?id=12577759834 自动在spider目录下生成taobao.py # -*- coding: utf-8 -*- import scrapy class TaobaoSpider(scrapy.Spider):     name = "taobao&qu