现实场景理解
·同步:一个人在同一个时刻只能做一件事情,在执行一些耗时的操作(不需要看管)不去做别的事,只是等待
·异步:在执行一些耗时的操作(不需要看管)去做别的事,而不是等待
Ajax中的实现
·xhr.open()方法第三个参数要求传入的是一个boolean值,其作用就是设置此次请求是否采用异步方式执行
·默认为true异步,如果需要同步执行可以通过传递false实现
·如果采用同步方式执行,则代码会卡死在xhr.send()这一步
建议
·为了让这个事件可以更加可靠(一定触发),在发送请求send() 之前,一定是先注册readystatechange
·不论是同步或异步都能触发成功
·了解同步模式即可,切记不要使用同步模式
<!DOCTYPE html> <html lang=“en”> <head> <meta charset=“UTF-8”> <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <title>Document</title> <script> // 1.创建一个 XMLHttpRequest 类型的对象 var xhr = null; // 兼容写法 if (window.XMLHttpRequest) { // 标准浏览器 xhr = new XMLHttpRequest(); } else { // IE 6 浏览器 xhr = new ActiveXObject(“Microsoft.XMLHTTP”); } // 2.打开一个与网址之间的连接 // 设置同步或异步 xhr.open(“GET”,“https://jsonplaceholder.typicode.com/users“,true); // xhr.open(“GET”,”https://jsonplaceholder.typicode.com/users",false); // 如果设置了同步加载,程序会卡在 send 部分 xhr.onreadystatechange = function () { // 通过判断 xhr 的 readyState ,确定此次请求是否完成 if (this.readyState === 4) { console.log(“请求成功”) } } // 3.通过连接发送一次请求 xhr.send(null); // 4.指定 xhr 状态变化事件处理函数 // Ajax 后面的代码 console.log(“After Ajax”); </script> </head> <body> </body> </html>