Inject Fetch API

前段时间在这里写了劫持 XHR 的方法,时代在进步,现在许多网站开始使用 Fetch API。Fetch API 是一套基于 Promise 的体系,和 XHR 差别还是挺大的。但是劫持起来反而更方便一点。

 
const _fetch = fetch;
fetch = (url, ...fargs) => {
return new Promise((resolve, reject) => {
_fetch(url, ...fargs).then(async res => {
resolve(res);
return res.clone();
}).then(async r => {
// do your things here
}).catch(e => {
reject(e);
});
})
}

利用 Promise 可以链式调用的特点,换掉原来返回的 Promise 。Fetch API 有一个特点就是 Response Body 只能被用一次,所以需要使用 Response.clone() 方法复制一个。

其实这种方法各种错误回报类服务都在广泛使用了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注