单线程与事件队列
2026/7/28 16:49:10 网站建设 项目流程

单线程与事件队列

JS的代码的执行遵从单线程+事件队列的事件处理机制;


事件队列中的任务执行的条件:
1、主线程已经空闲
2、任务满足触发条件
1、定时函数(延时时间已经达到)
2、事件函数(特定事件被触发)
3、ajax的回调函数(服务器端有数据相应)

如何理解?
JS代码为单线程,简单理解为自上而下的执行;但因为事件队列的机制存在,自上而下的执行过程中,会先将任务添加到队列中,当满足两个条件:1、主线程已经空闲;2、任务满足触发条件,才会将队列中的任务添加到事件的主线程中执行;
举个例子理解:事件队列,就比如取号排队,自上而下的执行到任务就取一个号码在队列中进行等待的时候,当被叫到号码(叫号有可能不是按顺序),即任务满足了触发条件,此时任务被添加到事件的主线程中执行;

先看一个定时器的例子:

console.log(1); setTimeout(function(){ console.log(2); },1); var sum = 0; for(var i=0;i<100000000;i++){ sum += i; } console.log(sum); console.log(3);

输出结果为:

//1 (sum的值) 3 2

再看一个事件处理的例子:

<input type="button" value="点击" id="btn"> -----------------------------分割线---------------------------------------- window.onload = function(){ var btn = document.getElementById('btn'); console.log(1); btn.onclick = function(){ console.log(this.value); } console.log(3); }

输出结果:

// 1 3 点击

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询