微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ajax一:工作原理

什么是Ajax?

1.Ajax是 Asynchronoous JavaScript and XML(异步JavaScript 和 XML)的缩写。
2.Ajax是一种创建交互式、快速动态网页应用的网页开发技术。
3.一种无需重新加载整个网页的情况下,就能够更新部分网页的技术。

为什么使用Ajax?

1.由于JavaScript是单线程,这就使得JS引擎只能完成一个任务才能接着完成下面的任务,如果当前任务的执行时间较长,就会发生阻塞(后面的任务无法继续执行,只能卡在此处)。试想一下,如果用户正要加载一个信息(此时浏览器就会向服务器端请求数据),但是此任务费时(可能服务器处理,网络传输花费很多时间),则用户只能等待的页面加载。但如果此时用户虽然在加载此信息但是其他信息能正常展示,等刚刚费时的任务传过来后再进行展示。这样的话用户体验会好。
2.传统的web浏览器在提交表单时,需要重新加载整个页面,这样提交的数据量大,造成网络性能问题,对服务器的压力也大。并且就算更新一点点的局部内容,服务器都会将整个页面刷新。

在这里插入图片描述

可以看出:Ajax的工作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。

工作原理/工作流程

这里需要了解Event Loop的工作原理了。

在这里插入图片描述

我觉得这张图最能说明了,当JS引擎正在执行三个函数fn1,fn2,fn3时,fn1是同步函数,直接执行;fn2是异步函数(假设是需要向服务器请求数据的函数),除了主线程以外,JS引擎会重开一个工作线程来执行异步任务,这时fn2就会加载到新的工作线程,和服务器交互数据,服务器有了响应返回到此线程(其实fn2只是个异步过程的发起函数,里面含包含一个回调函数),就会把包含回调函数的对象加到任务队列,等主线程有空时去执行。
也就是:主线程在发起ajax请求后,会继续执行其他代码。ajax线程负责读取文档,拿到响应结果后,把响应封装成一个JS对象,存放在任务队列中。

和主线程交互的大概流程知道啦,但是具体时怎么发起Ajax请求的呢?下一篇拭目以待吧!

参考:
https://www.cnblogs.com/dadaxindeyuanzi/p/11186068.html
https://www.jb51.net/article/90528.htm
https://www.zhihu.com/question/20874229

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐