setTimeout是异步的,在设置完setTimeout后,指定代码会在设定的时间后加入到任务队列,但并不是立即执行,js是单线程语言,所有的代码按顺序执行,即同步执行,同步执行的代码放在执行队列中,而异步执行的setTimeout放在任务队列中,执行顺序是先执行完执行队列中的代码再去查看任务队列中是否有要执行的代码:

这段代码看上去好像4应该比5先打印出来,但实际上是先打印出5再打印出4:

就如上面所说的,1,3,5都放在执行队列中,而4,2放在任务队列中,所以4,2要等执行队列中的1,3,5执行完后再按它们设定的时间顺序执行,setTimeout所设定的时间是相对于主程序执行结束的时间,并不是一个绝对的值。

最新文章

  1. MongoDB安装与故障
  2. MVC调试时遇到的URL问题
  3. AR(增强现实) 知识篇
  4. redis学习笔记——(2)
  5. SourceInsight支持Python代码阅读
  6. C#中的委托与事件
  7. webapi 接口规则
  8. Twitter实时搜索系统EarlyBird
  9. 命令行调试smali
  10. memcached预热失败
  11. Docker Registry
  12. Python中的变量类型
  13. LeetCode算法题-Count Binary Substrings(Java实现)
  14. freebsd 记录点
  15. 端口转发 Port Forwarding (一)
  16. openblas下载安装编译
  17. arcgis中的geodatabase模型
  18. bzoj3992
  19. k8s学习笔记之二:使用kubeadm安装k8s集群
  20. Intellj(IDEA)中修改No artifacts configured问题

热门文章

  1. Java微信公众平台开发_03_消息管理之被动回复消息
  2. android自定义控件(二) 入门,继承View
  3. Python: scikit-image 图像的基本操作
  4. 小心transform
  5. python爬虫知识点总结(十)分析Ajax请求并抓取今日头条街拍美图
  6. bzoj 2946 公共串 —— 后缀自动机
  7. PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯
  8. Docker入门(五):Swarms
  9. Divide Two Integers-不用'/' '*' '%'操作实现整数的除法
  10. ssh无密码登录设置失败的 解决办法