详解setTimeout原理

一、先上图吧:(引出问题)

你是不是觉得结果很有意思,好,我们说下原理:

主要是定时器异步,作用域问题。

二、详解setTimeout:

setTimeout的运行机制是,将指定的代码移出本次执行,等到下一轮Event Loop时,再检查是否到了指定时间。如果到了,就执行对应的代码;如果不到,就等到再下一轮Event Loop时重新判断。这意味着,setTimeout指定的代码,必须等到本次执行的所有代码都执行完,才会执行。

每一轮Event Loop时,都会将“任务队列”中需要执行的任务,一次执行完。setTimeout是把任务添加到“任务队列”的尾部。因此,它们实际上要等到当前脚本的所有同步任务执行完,然后再等到本次Event Loop的“任务队列”的所有任务执行完,才会开始执行。由于前面的任务到底需要多少时间执行完,是不确定的,所以没有办法保证,setTimeout指定的任务,一定会按照预定时间执行。

三、上边的你理解吗?不了解event loop?没关系,看下边呢:你可以从下边链接了解到 event loop,异步,同步,事件和回调函数,任务队列,等概念。

http://www.ruanyifeng.com/blog/2014/10/event-loop.html这里有很好的讲解呢。

你是不是感觉很烦,,去喝杯茶吧,歇歇眼,听听音乐。

时间: 2024-10-09 00:59:37

详解setTimeout原理的相关文章

Android 4.4 KitKat NotificationManagerService使用详解与原理分析(二)__原理分析

前置文章: <Android 4.4 KitKat NotificationManagerService使用详解与原理分析(一)__使用详解> 转载请务必注明出处:http://blog.csdn.net/yihongyuelan 概况 在上一篇文章<Android 4.4 KitKat NotificationManagerService使用详解与原理分析(一)__使用详解>中详细介绍了NotificationListenerService的使用方法,以及在使用过程中遇到的问题和

NotificationManagerService使用详解与原理分析(二)

前置文章: <Android 4.4 KitKat NotificationManagerService使用详解与原理分析(一)__使用详解> 转载请务必注明出处:http://blog.csdn.net/yihongyuelan 概况 在上一篇文章<Android 4.4 KitKat NotificationManagerService使用详解与原理分析(一)__使用详解>中详细介绍了NotificationListenerService的使用方法,以及在使用过程中遇到的问题和

nginx配置详解和原理

nginx配置详解和原理 1.nginx的配置文件 nginx 配置文件的整体结构 <pre>user nobody nobody; # 指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行,nobody 是系统用户,是一个不能登陆的帐号,一个特殊用途的用户 ID #启动进程,通常设置成和cpu的数量相等worker_processes 1; #指定了Nginx要开启的进程数.每个Nginx进程平均耗费10M~12M内存.建议指定和CPU的数量一致即可. #全局错误日

Android 4.4 KitKat NotificationManagerService使用详解与原理分析(一)__使用详解

概况 Android在4.3的版本中(即API 18)加入了NotificationListenerService,根据SDK的描述(AndroidDeveloper)可以知道,当系统收到新的通知或者通知被删除时,会触发NotificationListenerService的回调方法.同时在Android 4.4 中新增了Notification.extras 字段,也就是说可以使用NotificationListenerService获取系统通知具体信息,这在以前是需要用反射来实现的. 转载请

zend framework2 之入口文件详解以及原理解析

zend framework2 之入口文件详解 转载请注明出处,尊重原创:http://blog.csdn.net/a437629292/article/details/41545297,谢谢! 一.基本配置解析 1. 详细配置: 如下代码: <?php // 定义程序目录 defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // D

线段树详解 (原理,实现与应用)

线段树详解 By 岩之痕 目录: 一:综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点. 线段树的用处就是,对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)). 线段树的原理,就是,将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为 少量特定的子区

网络层协议介绍,IP包格式详解+ARP原理(重点3,网络小白必备知识)

一.我们先回顾一下网络层是我们网络基础七层原理的哪一层是我们的第三层,这个数据包里面有IP头部,TC头部和上层数据二.网络层的功能网路层数据包里面的IP地址相当于我们的逻辑地址,全局地址,在全球当中我们的电脑会被分配到一个地址.三.数据包格式详解版本:我们现在有两个版本IPV4,IPV6,首先我们的IP地址的资源是有限的,我们暂时处于这两个的中间,全球60几亿人.首部长度:就是我们头部格式的长度,不包含上层数据优先级与服务类型:决定什么数据先发送,就比如我们QQ发消息给别人,同时我们还在下载东西

js 定时器用法详解——setTimeout()、setInterval()、clearTimeout()、clearInterval()

  在js应用中,定时器的作用就是可以设定当到达一个时间来执行一个函数,或者每隔几秒重复执行某段函数.这里面涉及到了三个函数方法:setInterval().setTimeout().clearInterval(),本文将围绕这三种函数的用法,来实现定时器的功能,需要的朋友可以过来参考下,喜欢的可以点波赞,或者关注一下本人,希望对大家有所帮助. 定时器的应用需求: 1.设定一个时间,当时间到达的时候执行函数----比如:倒计时跳转页面等等. 2.每隔一段时间重复执行某段函数----比如抢票软件,

HTTP详解-工作原理

1. HTTP简介 HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅保证计算机 正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等. 在了解HTTP如何工作之前,我们先了解计算机之间的通信. 2. 计算机相互之间的通信 互联网的关键技术就是TCP/IP协议.两台计算机之间的通信是通过TCP/IP协议在因特网上进行