1.看这段代码 vuejs的代码,在mounted里面执行下面的代码
mounted(){
console.log('axios send',new Date().getTime())
axios.get('http://localhost:3000/api?a=2')
var a=10000000000;
console.log('while exec',new Date().getTime())
while(a>0){
a--;
}
console.log('while finish',new Date().getTime())
},
我在后台服务器打断点接收请求,发现收到请求的时间是在while finish这段代码执行的时候,也就是while循环执行完才开始发送的请求,为什么while循环阻塞了浏览器的ajax线程发送请求呢?这俩不应该是互不影响吗?
经过自己测试,发现如果不用axios发送的话请求是在正确的时机发送的,也就是while执行前就发送了,而因为axios用了promise来包裹xhr请求,所以这个任务被放到了微任务队列,因为微任务队列必须等到所有同步任务执行完才会执行,所以.....请求延后了