美文网首页
fetch 学习笔记

fetch 学习笔记

作者: 愤的小鸟怒 | 来源:发表于2019-07-29 11:20 被阅读0次

fetch api

  1. Headers: 创建一个请求的 Header
    const headers = new Headers();
    headers.append('Content-Type', 'text/plain');
    
  2. Request: 创建一个 Request 对象
    const request = new Request(url);
    console.log(request.url); // http://localhost:3001/glb/30-Inch-Wide-Drop-In-Short-Shelf-Assy-WF-SMT.glb
    console.log(request.method); // GET
    console.log(request.credentials); // same-origin
    
  3. Response: 请求的返回值
    3.1. Response.status: StatusCode,成功 200。
    3.2. Response.statusText: StatusCode,成功就是 "OK"。
    3.3. Response.ok 一个 Boolean 类型的值,判断是否正常返回,也就是 StatusCode 为 200-299。

Body 参数

Request 和 Response 中都包含 Body 的实现,包含以下内容:

  1. ArrayBuffer
  2. ArrayBufferView (Uint8Array and friends)
  3. Blob/File
  4. string
  5. URLSearchParams
  6. FormData

在 fetch 中对应的方法,并返回的都是 Promise 对象。

  1. arrayBuffer()
  2. blob()
  3. json()
  4. text()
  5. formData()

使用 fetch 请求一个 glb 格式的文件。

const url = './glb/30-Inch-Wide-Drop-In-Short-Shelf-Assy-WF-SMT.glb';

const request = new Request(url);
console.log(request.url); // http://localhost:3001/glb/30-Inch-Wide-Drop-In-Short-Shelf-Assy-WF-SMT.glb
console.log(request.method); // GET
console.log(request.credentials); // same-origin

const headers = new Headers();
headers.append('Content-Type', 'text/plain');

const init = {
  method: 'GET',
  headers,
  cache: 'default',
};

const glbLoader = async () => {
  const load = await fetch(request, init).then(
    obj => obj.arrayBuffer(),
  );
  return load;
};

arrayBuffer() 最终返回的结果是这样的:


屏幕快照 2019-07-29 上午11.30.35.png

fetch 的不足之处:

  1. fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。
  2. fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: 'include'})
  3. fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
  4. fetch没有办法原生监测请求的进度,而XHR可以

相关文章

  • Git学习笔记三

    Git学习笔记 3 fetch、pull与push 了解fast-forwards fetch从远端拉到本地保持一...

  • Fetch API学习笔记

    Fetch API学习笔记 Fetch是一个现代的概念, 等同于 XMLHttpRequest。它提供了许多与XM...

  • fetch学习笔记

    刚接触前端的时候,辛辛苦苦揭开了ajax的神秘面纱 然后promise和fetch就冒出来了(生气 生气又怎么样,...

  • fetch 学习笔记

    fetch api Headers: 创建一个请求的 Headerconst headers = new Head...

  • 学习Fetch

    语法说明 实例 url 定义要获取的资源。这可能是: 一个 USVString 字符串,包含要获取资源的 URL。...

  • Fetch API 笔记

    The Request interface of the Fetch API represents a resou...

  • mysqli_result::fetch_array

    mysqli_result::fetch_array -- mysqli_fetch_array — Fetch ...

  • Fetch

    Fetch API使用 Fetch

  • fetch API 的基本使用

    fetch Fetch API是新的ajax解决方案 Fetch会返回Promise fetch不是ajax的进一...

  • (转)Hibernate中fetch和lazy介绍

    fetch ,指定关联对象抓取的方式,可以设置fetch = "select" 和 fetch = "join"。...

网友评论

      本文标题:fetch 学习笔记

      本文链接:https://www.haomeiwen.com/subject/nlyrrctx.html