JS异步编程
服务器
C/S架构
B/S架构
使用 WampServer 搭建 HTTP服务
静态网站和动态网站
静态网站:
- 访问的是实实在在保存在服务器上的文件。静态资源包括:html页面、css文件、js文件、图片等。
- 当内容、图片、界面需要更新时,直接修改.html文件。
动态网站:
- 当用户访问网站时,根据
某些逻辑
,动态生成对应的HTML、CSS、JS
代码给用户(这也就是web服务器开发的本质)。 - 通过某种手段,当有新的消息时,自动的完成网站的更新。
总结:
由于静态网站在维护的局限性,所以产生了动态网站。
实现动态网站的技术:php/jsp/.net/python等。
动态网站的原理:浏览器请求动态网站的页面(比如*.php),php拼接数据并动态生成html页面,然后将新生成的页面返回给浏览器
PHP
异步
JavaScript 语言和执行环境是单线程。即同一时间,只能处理一个任务。
- 同步任务:在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行下一个任务。
- 异步任务:不进入主线程、而是进入任务队列(Event Queue)的任务,该任务不会阻塞后面的任务执行。只有”任务队列”通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
==什么时候需要等待,就什么时候用异步==(因为需要等待的任务不能阻塞在主线程里)
- 1、事件监听(比如说,按钮绑定点击事件之后,用户爱点不点。我们不可能卡在按钮那里,什么都不做。所以,应该用异步)
- 2、回调函数:
- 2.1、定时器:setTimeout(定时炸弹)、setInterval(循环执行)
- 2.2、ajax请求。
- 2.3、Node.js 中的一些方法回调。
- 3、ES6 中的 Promise、Generator、async/await
执行顺序
可以看到异步任务要在主线程执行完同步任务之后再进行(不管它本身需要等待多久)
Ajax
在浏览器中,我们可以在不刷新页面的情况下,通过 Ajax 的方式去获取一些新的内容。
Ajax:Asynchronous Javascript And XML(异步 JavaScript 和 XML)。它并不是凭空出现的新技术,而是对于现有技术的结合。Ajax 的核心是 js 对象:XMLHttpRequest。
发送 Ajax 请求的五个步骤:
(1)创建异步对象,即 XMLHttpRequest 对象。
(2)使用 open 方法设置请求参数。open(method, url, async)
。参数解释:请求的方法、请求的 url、是否异步。第三个参数如果不写,则默认为 true。
(3)发送请求:send()
。
(4)注册事件:注册 onreadystatechange 事件,状态改变时就会调用。
如果要在数据完整请求回来的时候才调用,我们需要手动写一些判断的逻辑。
(5)服务端响应,获取返回的数据。
jQuery 中的 Ajax
JQuery 作为最受欢迎的 js 框架之一,常见的 Ajax 已经帮助我们封装好了,只需要调用即可。更为详细的 api 文档可以查阅:w3cSchool_JQueryAjax
格式举例:
$.ajax({
url: 'https://xxx.com/getUserInfo.php', // 接口的请求地址
data: 'name=fox&age=18', // 请求参数
type: 'GET', //请求的方式
success: function (argument) {
// 接口请求成功时调用
console.log('接口请求成功');
},
beforeSend: function (argument) {}, // 在发送请求之前调用,可以做一些验证之类的处理
error: function (argument) {
// 接口请求失败时调用
console.log('接口请求失败');
},
});