View on GitHub

Cycle263 Blog

Stay hungry, stay foolish.

fetch

fetch 号称是 AJAX 的替代品,是在 ES6 出现的,使用了 ES6 中的 promise 对象。Fetch 是基于 promise 设计的。Fetch 的代码结构比起 ajax 简单多了,参数有点像 jQuery ajax。但是,一定记住 fetch 不是 ajax 的进一步封装,而是原生 js。Fetch 函数就是原生 js,没有使用 XMLHttpRequest 对象。

fetch(fetchurl, {
  credentials: "include", // 默认值为omit 不带上cookie,include为任意地址都带上cookie
  method: "POST",
  headers: {},
  body: JSON.stringify(params)
});

fetch body type

fetch 无法中断请求

通过创建一个 AbortController 实例,我们得到了一个 Fetch API 原生支持的控制中断的控制器。

const controller = new AbortController();
const { signal } = controller;
fetch('/foo', { signal }).then(...);
signal.onabort = () => { ... };
controller.abort();

fetch 请求 gbk 数据乱码问题

fetch 默认的请求编码格式为 utf-8,若后端返回的 gbk 数据,修改 fetch 的请求编码格式,也不见效果

参考资料

fetch vs xhr

stream vs fetch