JavaScript setTimeout 的原理
来源:互联网 发布:slam算法工程师招聘 编辑:程序博客网 时间:2024/05/16 18:22
JavaScript 引擎是基于事件驱动单线程执行的,JavaScript 引擎一直等待着任务队列中的任务,接收到任务就加以处理,任务过多时会按序等待处理。
setTimeout 调用的时候,JavaScript引擎会启动定时器 timer,在第二个参数 n 毫秒 以后执行第一个参数回调或代码段,当定时器的时间到了,就把该事件放到主事件队列等待处理。
也就是说需要看任务放到队列中的顺序。
var waiting = (number)=> { var now = new Date(); var untilEnd = now.getTime() + number; while (true) { now = new Date(); if (now.getTime() > untilEnd) return; }}(()=> { console.log("理论上在 100ms 后调用延时回调"); setTimeout(()=> console.log("空闲时,调用了延时回调"), 100); console.log("等了 100ms"); waiting(100); setTimeout(()=> console.log("我虽然 10ms 延迟短,但是我排在队列的最后。"), 10);})();console.log("又等了 500ms,之后");waiting(500);
结果:
理论上在 100ms 后调用延时回调
等了 100ms
又等了 500ms,之后
空闲时,调用了延时回调
我虽然 10ms 延迟短,但是我排在队列的最后。
阅读全文
0 0
- JavaScript setTimeout 的原理
- JavaScript的计时器的工作原理(setTimeout/setInterval)
- setTimeout的工作原理
- setTimeout的工作原理
- javascript的settimeout
- Javascript setTimeout的用法
- javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景
- javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景
- javascript 的setTimeout 和 setInterval
- JavaScript 中 setTimeout()的用法
- javascript setTimeout方法的使用
- javascript中setTimeout的问题
- javaScript里的setTimeout()函数
- JavaScript中setTimeout的用法
- javascript的settimeout和异步
- JavaScript 的 setInterval 、settimeout 、clearInterval
- JavaScript window.setTimeout() 的详解
- JavaScript的setTimeout用法注意事项
- [日推荐]『番茄闹钟』让你专注每个25分钟!
- 11月9日云栖精选夜读:阿里90后工程师,如何用AI程序写出双11打call歌?
- TCP协议数据格式
- 使用DOClever接口管理平台,使用免费开源版本线下(linux(mac))该怎么安装部署?
- 版本控制之道------Git安装和使用
- JavaScript setTimeout 的原理
- cmake指令详解
- 出于好奇,我去暗网里瞧了瞧 —— 你就别去了
- vue-resource jsonp接口传参-json传参
- oracle 12c rac ocr和votedisk管理
- effective C++ 学习 (Customizing new and delete)
- Unity3D 摄像机(Camera)属性详解
- HIVE分区表新增字段后新增字段值为空,需要带分区加字段
- php变量范围介绍