本文概述
- 5. Fetch Polyfill
- 4. Fetch ie8
- 3. Unfetch
- 2. Isomorphic Fetch
- 1. Github Fetch(whatwg)
主要区别在于Fetch API使用Promises, 从而实现了更简单, 更简洁的API, 避免了回调地狱, 并且必须记住XMLHttpRequest的复杂API。 [在fetch()简介中了解更多信息]此API自Chrome 42起可用。该API的问题之一是, 它还使用了所有浏览器(承诺)都不支持的API, 因此除了Fetch polyfill之外, 你还需要使用polyfill以获得承诺(有关更多信息, 请参阅我们的5种最佳Promises Polyfills帖子)。如果你已经找到Promises API的polyfill, 那么你肯定会想知道哪种Fetch Polyfill是最好的。在本文中, 我们想与你分享5种API的Polyfills, 它们将在较旧的浏览器上为你提供对该API的支持。
5. Fetch PolyfillRubyLouvre的fetch polyfill支持所有主流浏览器, 甚至IE6, IE7和IE8:
fetch('/users.json').then(function(response) {
return response.json()
}).then(function(json) {
console.log('parsed json', json)
}).catch(function(ex) {
console.log('parsing failed', ex)
});
Polyfill还需要文档中包含的Promises API的另一个polyfill。
4. Fetch ie8此Polyfill是一个window.fetch支持IE8的JavaScript polyfill。此fork支持带有es5-shim, es5-sham和es6-promise的IE8。 Fetch API仍然很新, 并且在某些浏览器中不完全支持, 因此你可能需要检查浏览器版本以及是否存在window.fetch。在这种情况下, 可以设置window .__ disableNativeFetch = true以始终使用AJAX polyfill。提取功能支持任何HTTP方法:
fetch('/users.html').then(function(response) {
return response.text()
}).then(function(body) {
document.body.innerHTML = body
})
3. UnfetchUnfetch是一款具有500b可读取功能的” barely-polyfill” , 具有以下功能, 由developerit开发:
- 微小:不到500字节的ES3压缩文件
- 最小:仅带有标题和text / json响应的fetch()
- 熟悉:完整API的子集
- 支持:支持IE8 +(当然, 假设Promise已填充)
- 独立:一个功能, 没有依赖关系
- 现代:用ES2015写成, 可移植到500b的老式JS中
2. Isomorphic Fetch同构提取是针对节点和Browserify的提取API的polyfill。构建在GitHub的WHATWG Fetch polyfill之上。
require('es6-promise').polyfill();
require('isomorphic-fetch');
fetch('//offline-news-api.herokuapp.com/stories').then(function(response) {
if (response.status >
= 400) {
throw new Error("Bad response from server");
}return response.json();
})
.then(function(stories) {
console.log(stories);
});
1. Github Fetch(whatwg)每个人都知道Github, 但是并不是每个人都知道Github在Github中有一个存储库(头脑爆炸)。 Github上最著名的存储库之一就是Polyfill for Fetch。该项目实现了标准Fetch规范的子集, 足以使fetch替代传统Web应用程序中XMLHttpRequest的大多数用法。它支持以下浏览器:
- 铬
- 火狐浏览器
- Safari 6.1+
- Internet Explorer 10+
编码愉快!
推荐阅读
- 十大最佳高级医学/医疗WordPress主题
- 十大图像最佳jQuery和JavaScript延迟加载器插件
- 使用IabHelper时无法绑定InAppBillingService
- 有没有办法设置我的Android应用程序的最大版本,允许一组用户下载()
- Ionic 3.0版本构建 - 取代Android Studio内置的现有Google Play应用
- Android应用内商品价格存储/显示
- Android - 检查用户是否从其他软件包购买了InApp产品[重复]
- 如何在应用程序中连接Android市场()
- Android应用程序更新通知