settimeout(fn(),0)

总所周知,settimeout 函数是用来做延时的,如

settimeout(()=>{console.log('show content')},1000)

很容易理解,结果是在一秒后打印出 show content


可是,settimeout 设置的时间是 0,这什么鬼?

settimeout(()=>{console.log(1)},0)
console.log(2)

像如上的代码,正常的思维都会想到,打印的结果为 1 2

然而,其打印的结果实际是 2 1


原来,咱们用的JavaScript所编写的代码是运行在单线程上面的,在单线程上想要执行多路任务,JavaScript就搞了个阻塞执行,阻塞执行就是 如果正在执行某个任务,其他的任务都要排队执行,这将形成一个队列,而 settimeout(fn,0) 这样将时间设为0的,就会“立刻插入到队列中”


所以说,settimeout(fn,0) ≠ fn(),回到代码中来看,console.log(2) 的执行优先级就自然比 settiemout 中的 console.log(1) 高了。

settimeout(fn(),0)相关推荐

  1. setTimeout(fn,0)

    我们都知道setTimeout是一个延迟执行的函数 console.log(1); setTimeout(function(){console.log(2);},1000); console.log( ...

  2. 【 js 基础 】【 源码学习 】 setTimeout(fn, 0) 的作用

    在 zepto 源码中,$.fn 对象 有个 ready 函数,其中有这样一句 setTimeout(fn,0); 1 $.fn = { 2 ready: function(callback){ 3 ...

  3. JavaScript下的setTimeout(fn,0)的作用,涨知识了

    单线程的javascript 首先我们来看浏览器下的JavaScript: 浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,G ...

  4. JavaScript下的setTimeout(fn,0)意味着什么?

    近期在研究异步编程的我对于setTimeout之类的东西异常敏感.在SegmentFault上看到了一个问题<关于SetTimeout时间设为0时>:提问者读了一篇文章,原文解释setTi ...

  5. setTimeout延时0毫秒的作用

    经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用 1.实现javascript的异步: 正常情 ...

  6. setTimeout(function(){}, 0);

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

  7. 为什么setTimeout(fn,0)有时有用?

    我最近遇到了一个令人讨厌的错误,该错误代码是通过JavaScript动态加载<select> . 动态加载的<select>具有预先选择的值. 在IE6中,我们已经有代码来修复 ...

  8. vue2.0读书笔记2-进阶

    一.深入响应式原理 二.过渡效果 三.过渡状态 四.Render函数 五.自定义指令 六.混合 七.插件 八.单文件组件 九.生产环境 十.路由 vue-router: http://router.v ...

  9. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...

    javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...

最新文章

  1. 点击更新没反应_Edge浏览器双击无反应?再也不用烦恼啦
  2. 备份oracle中的大表
  3. 线性表adt的c语言表达,抽象数据类型定义(ADT)
  4. 保存页面供以后使用Firefox的阅读列表扩展
  5. NumPy 简单应用
  6. 【python】字符串转换整数 (atoi) - String
  7. Mellanox网卡不能分配VF解决方法
  8. lwj_C#_homework 攻城车 攻击 WASD移动
  9. ESP分区和MSR分区下怎么重做GHOST系统
  10. AiraNg配合RileRun下载及观看神器,包括(Aria搭建方法,AriaNg搭建问题)
  11. Xml字符串转Map
  12. LED护眼灯真的可以护眼吗?2022专业护眼台灯品牌排行榜
  13. BPM常见流程案例:会签流程、或签流程、分支流程、并行流程
  14. 如何免费将caj转换成PDF,支持批量且不用安装软件
  15. 景深(perspective)
  16. 电力电子技术笔记(2)——电力二极管
  17. [高通SDM450][Android 9.0] 虹软人脸算法WIFI信息变化导致授权失败
  18. 征婚网站php免费源码,php交友网站系统正式版php征婚网站模板
  19. 解决 Cocos2d-x 3.2 error C1041: 无法打开程序数据库vc120.pdb
  20. c语言 --- 基本输入输出

热门文章

  1. Python 3.9 正式版要来了,会有哪些新特性?
  2. Flash 已死,Deno 当立?
  3. 收藏!Java 500 道核心面试题全解析
  4. 罗永浩宣布进军电商直播;微博回应用户数据泄露;Android 11 开发者预览版 2 发布 | 极客头条...
  5. 2020年,程序员要做好苦日子的准备了!
  6. 流量和延迟减半!挑战 TiDB 跨数据中心难题
  7. 腾讯云开发者大会 | 腾讯云大学首次与业界顶尖厂商合作的线上学习专区重磅发布...
  8. 300 秒带你吃透大数据!
  9. 2019 年互联网人才招聘报告:Java 吃香,算法工程师紧缺,今日头条崛起!
  10. 爱奇艺否认裁员 20%;京东回应撤出澳洲;Android Studio 3.5 Beta 来了!| 极客头条...