event loop学习笔记

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、微任务中的微任务

上一篇:成都新房二手房房价采集


下一篇:mysql中游标的简单使用