概述
我们都知道js是单线程的,一次只能执行一个任务,但是Js的执行环境(一般是浏览器),维护了一个事件对列。在Js的主线程执行的过程中碰到Ajax或setTimeout等异步操作时,会把它们加入浏览器维护的事件队列,当主线程执行完毕之后,会按顺序去取事件队列里面的任务。
上一张比较搓逼的图
- 1.执行主线程上面的代码
- 2.碰到Ajax,setTimeout等异步操作,将异步操作的回调函数加入事件队列
- 3.当主线程空闲依次去执行事件队列里面的任务
- 4.如此往复,重复1,2,3
最后来一个例子啦
$(function () {
console.log('----------First----------');
$.ajax({
url: 'https://api.apiopen.top/musicBroadcastingDetails?channelname=public_tuijian_spring',
type: 'GET',
success: function (str) {
console.log('----------Fourth-----------');
}
});
setTimeout(function () {
console.log('----------Third-----------');
}, 0);
console.log('----------Second-----------');
});
复制代码