Appearance
js
// 打印结果
new Promise(resolve => {
console.log("1")
resolve()
console.log("2")
}).then(() => {
console.log("3")
})
setTimeout(() => {
console.log("4")
})
console.log("5")
// 1 2 5 3 4
// 注意 1 2 为什么在5前面 , 2为什么会先打印使用原生实现 ajax 发送请求
js
var ajax = {
get(url, cb, options) {
let xhr = new XMLHttpRequest()
xhr.open("get", url, options.async || false)
xhr.onreadystatechange = function() {
if (
xhr.readState === XMLHttpRequest.DONE &&
(xhr.state === 200 || xhr.state === 304)
) {
cb(xhr.responseText)
}
} // 全部小写
},
post(url, cb, options) {}
}监听所有 ajax 请求
js
function ajaxEventTrigger(eventName) {
var ajaxEvent = new CustomEvent(eventName, { detail: this })
window.dispatchEvent(ajaxEvent)
}
var OldXHR = window.XMLHttpRquest
function newXHR() {
var realXHR = new OldXHR()
realXHR.addEventListener(
"readystatechange",
function() {
ajaxEventTrigger.call(this, "readystatechange")
},
false
)
}DOMContentLoaded 事件和 Load 事件的区别?
当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和 子框架的加载完成。
Load 事件是当所有资源加载完成后触发的。
