码迷,mamicode.com
首页 > 其他好文 > 详细

详解setTimeout原理

时间:2017-07-06 20:52:11      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:概念   www   讲解   ref   技术分享   运行   开始   ima   htm   

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

技术分享技术分享技术分享技术分享

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

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

二、详解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这里有很好的讲解呢。

 

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

 

详解setTimeout原理

标签:概念   www   讲解   ref   技术分享   运行   开始   ima   htm   

原文地址:http://www.cnblogs.com/gaoxuerong123/p/7127964.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!