setTimeout-的执行时机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setTimeout-的执行时机相关的知识,希望对你有一定的参考价值。
今天碰到个很有意思id问题。setTimeout,第二个参数是0的时候会发生什么
一般认为如果是0的话应该立即执行的。但是很遗憾我这个回答是错误的。
本着不懂就问的精神特意去百度了下。发现介绍的都模模糊糊,或者太过深入。
我做了个试验:
console.log(1);
setTimeout(function(){console.log(2)},0);
console.log(3)
输出的结果:
1
3
141
2
我理解的原因:
当浏览器执行js 时,遇到setTimeout时,会将其挂起,等待剩余js生完毕后再来执行setTimeout内的代码,不管其第二个参数值为多少,都是如此;
第三个输出的141 呢。其实是这个setTimeout的id 用于 使用 clearTimeout 来清除 setTimeout 的。
测试时,还会发生一种情况输出的结果是
1
3
undefined
2
按我的的理解呢,也需是延时为0 也就不需要id 来清除了...(完全是瞎猜的!!!)
以上是关于setTimeout-的执行时机的主要内容,如果未能解决你的问题,请参考以下文章
setTimeout中所执行函数中的this,永远指向window
JavaScript定时器 setTimeout与setInterval 浅析
Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrackonTriggeronInvalidate副作用的刷新时机`watch` pre)(代码片段