// 设置同步或异步
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("请求成功")
}
}
现实场景理解
• 同步:一个人在同一个时刻只能做一件事情,在执行一些耗时的操作(不需要看管)不去
做别的事,只是等待
• 异步:在执行一些耗时的操作(不需要看管)去做别的事,而不是等待
Ajax 中的实现
• xhr.open() 方法第三个参数要求传入的是一个 boolean 值,其作用就是设置此次请求是
否采用异步方式执行
• 默认为 true 异步,如果需要同步执行可以通过传递 false 实现
• 如果采用同步方式执行,则代码会卡死在 xhr.send() 这一步
• 为了让这个事件可以更加可靠(一定触发),在发送请求 send() 之前,一定是先注册
readystatechange
• 不论是同步或异步都能触发成功
• 了解同步模式即可,切记不要使用同步模式