event loop学习笔记
1、同步任务和DOM渲染
console.log("****event-start****");
$("div").append('<p>满堂花醉三千客</p>'); //DOM渲染
alert("aaaaaa")
在点击alert之前,DOM不会渲染。顺序:同步任务->DOM渲染
2、加入ajax
console.log("****event-start****");
$("div").append('<p>满堂花醉三千客</p>'); //DOM渲染
$.get("./data/test.json",data=>{ //ajax宏任务
alert('bbbbbb');
})
alert("aaaaaa")
顺序:同步任务->DOM渲染->ajax(宏任务)
3、加入setTimeout
console.log("****event-start****");
$("div").append('<p>满堂花醉三千客</p>'); //DOM渲染
setTimeout(function () {
alert("cccccc");
}, 0);
$.get("./data/test.json",data=>{ //ajax宏任务
alert('bbbbbb');
})
alert("aaaaaa")
顺序:同步任务->DOM渲染->ajax(宏任务)->setTimeout(宏任务)
为什么同是宏任务,ajax比setTimeout先执行
4、加入Promise
console.log("****event-start****");
$("div").append('<p>满堂花醉三千客</p>'); //DOM渲染
setTimeout(function () {
alert("cccccc");
}, 0);
$.get("./data/test.json",data=>{ //ajax宏任务
alert('bbbbbb');
})
let promise=new Promise((resolve,reject)=>{ //promise微任务
console.log('dddddd');
resolve('成功')
});
promise.then(()=>{
alert('dddddd')
});
alert("aaaaaa")
顺序:同步任务->Promise(微任务)->DOM渲染->ajax(宏任务)->setTimeout(宏任务)
5、宏任务中加入微任务
console.log("****event-start****");
$("div").append('<p>满堂花醉三千客</p>'); //DOM渲染
setTimeout(function () {
alert("cccccc");
}, 0);
$.get("./data/test.json",data=>{ //ajax宏任务
alert('bbbbbb');
let promise2=new Promise((resolve,reject)=>{ //promise微任务
console.log('eeeeee');
resolve('成功')
});
promise2.then(()=>{
alert('eeeeee')
});
})
let promise1=new Promise((resolve,reject)=>{ //promise微任务
console.log('dddddd');
resolve('成功')
});
promise1.then(()=>{
alert('dddddd')
});
alert("aaaaaa")
顺序:同步任务->Promise(微任务)->DOM渲染->ajax(宏任务)->ajax(Promise)(宏任务中的微任务)->setTimeout(宏任务)
6、微任务中的宏任务、宏任务中的宏任务
console.log("****event-start****");
$("div").append('<p>满堂花醉三千客</p>'); //DOM渲染
setTimeout(function () {
alert("cccccc");
}, 0);
$.get("./data/test.json",data=>{ //ajax宏任务
alert('bbbbbb');
let promise2=new Promise((resolve,reject)=>{ //promise微任务
console.log('eeeeee');
resolve('成功')
});
promise2.then(()=>{
alert('eeeeee')
});
})
let promise1=new Promise((resolve,reject)=>{ //promise微任务
console.log('dddddd');
resolve('成功')
});
promise1.then(()=>{
alert('ffffff')
$.get("./data/test.json",data=>{ //ajax宏任务
alert('gggggg');
})
});
$.get("./data/test.json",data=>{ //ajax宏任务
alert('hhhhhh');
$.get("./data/test.json",data=>{ //ajax宏任务
alert('iiiiii');
})
})
alert("aaaaaa")
7、微任务中的微任务
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。