当前位置: 首页 > Web前端 > JavaScript

还在砸阿贾克斯?然后出来了!

时间:2023-03-27 12:50:34 JavaScript

世代有才,各领风骚数百年。前言我觉得AJAX基本是面试的必考题,比如“异步调用,高性能”之类的。那时候AJAX真的很流行,没有AJAX就没有前端。然而,古语有云:“人百日不欢,花百日不红”,也有人说“世代有才,各领风骚”。几百年了。”AJAX当然也不例外。这不,这两年,我们在很多新框架中都能清晰地找到Fetch的影子,其易用性和稳定性也得到了反复验证。Fetch的概念Fetch提供了请求和响应(以及其他网络请求相关)对象的通用定义。以便以后可以在更多的应用场景中使用:无论是serviceworker,CacheAPI,还是其他处理请求和响应的方法,甚至是任何需要你自己在程序中生成响应的方法。它还提供了相关概念的新定义,例如CORS和HTTP本机标头,而不是它们原来的单独定义。要发送请求或获取资源,您需要使用WindowOrWorkerGlobalScope.fetch()方法。它在许多接口中实现,更具体地说是在Window和WorkerGlobalScope接口上。所以,几乎所有的环境都可以通过这种方式获取资源。兼容性取决于新的API是否会流行。最简单的方法是查看其兼容性。毕竟,如果兼容性不好,一个好用的API是很难流行起来的。可以看出Fetch方法对IE以外的浏览器的兼容性不是很好,这可以说是已经大火的先决条件。既然是用与AJAX的区别来代替AJAX,那肯定有一些AJAX不具备的特性优势,否则何必被代替。总结一下,不同点在于:Fetch使用了promises而不是回调函数,所以写法大大简化,更加简洁。Fetch采用模块化设计,API分散在多个对象(Response对象、Request对象、Headers对象)上,更加合理;相比之下,XMLHttpRequest的API设计不是很好,输入、输出、状态都在同一个接口管理,很容易写出很混乱的代码。Fetch通过数据流(Stream对象)处理数据,可以分块读取,有利于提高网站性能,减少内存占用。对于请求大文件或者网速慢的场景非常有用。XMLHTTPRequest对象不支持数据流,所有的数据都必须放在缓存中,不支持分块读取,必须等所有的数据都取出来,一次性吐出。Fetch非常符合趋势。至少,我们可以省去很多回调函数,代码风格也可以得到改善。Fetch用法fetch()方法必须接受一个参数——资源路径。不管请求成功与否,都会返回一个Promise对象,resolve对应请求的Response。基本语法如下:fetch(url).then(...).catch(...)例如:fetch('https://bianchengsanmei.com/getInfo').then(response=>response.json()).then(json=>console.log(json)).catch(err=>console.log('请求失败',err));在上面的示例中,fetch()收到的响应是一个Stream对象,response.json()是一个异步操作,它获取所有内容并将其转换为JSON对象。可以使用await语法重写Promise,使语义更清晰:asyncfunctiongetJSON(){leturl='https://bianchengsanmei.com/getInfo';尝试{让响应=等待获取(url);返回等待响应.json();}catch(error){console.log('请求失败',error);}}在上面的例子中,await语句必须放在try...catch里面,这样才能捕获异步操作中可能出现的错误。总结所谓时代造就的英雄,由于JavaScript标准的飞速发展,AJAX已经崛起,但即将陨落。Fetch能走多远,让我们拭目以待。以上是关于Fetch的一些总结,主要是借鉴前辈们的文章和教程,希望能给大家带来一些收获!~~本文到此结束,感谢阅读!~学习有趣的知识,认识有趣的朋友,塑造有趣的灵魂!大家好,我是〖编程三昧〗的作者王隐,我的公众号是《编程三昧》,欢迎关注,希望大家多多指教!你来,怀揣期待,我以墨香迎接你!您归来,不分得失,只送回味!知识与技能并重,内功与外功并重,理论与实践两手抓,两手都要用力!参考文档:FetchAPIFetchAPI教程