JavaScript中setTimeout有什么用

  介绍

小编给大家分享一下JavaScript中setTimeout有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

周期定时器:setInterval ()

<强>介绍

setInterval()是按照指定的周期来调用定时器,方法会不断的调用定时器,直到使用clearInterval()停止或者窗口关闭。

<强>语法

setInterval(代码、毫秒lang)

<李>

代码:要执行的方法体(必选)

<李>

毫秒:每隔多少毫秒执行一次(单位是毫秒,如果设置为5000,即每5秒执行一次)(必选)

<李>

朗:指使用的语言(可选)

<强>实例

通过setInterval实现时钟效果

& lt; html>   & lt; body>      & lt;输入类型=皌ext"id=癱lock"/比;   & lt;脚本类型=拔谋?javascript"比;//每隔1秒执行一次时钟方法   var int=self.setInterval(“时钟()“,1000);   钟()函数   {   var d=新的日期();   var t=d.toLocaleTimeString ();   . getelementbyid (“clock") value=https://www.yisu.com/zixun/t;   }>   <按钮>  JavaScript中setTimeout有什么用“> </p> <h5>的一次性的定时器:setTimeout () </h5> <编辑> </编辑> <p> ? ?顾名思义,这个定时器只会执行一次,和setInterval()的区别就在这儿了,正是因为如此,setInterval()才需要使用clearInterval方法去取消定时器</p> <编辑> </编辑> <p> ? ? setTimeout(代码、毫秒lang) ? ? ? ? ps:每个参数的含义和setInterval()的均相同</p> <编辑> </编辑> <p> ? ?点击按钮3秒后弹出“Hello”</p> <pre类= & lt; !DOCTYPE html>   & lt; html>   & lt; head>   & lt;元charset=皍tf-8"祝辞   & lt; title>菜鸟教程(runoob.com) & lt;/title>   & lt;/head>   & lt; body>      & lt; p>点击按钮,在等待3秒后弹出“Hello"灵活;/p>   & lt;按钮alt=" JavaScript中setTimeout有什么用“>

取消定时器
<编辑>

? ?使用计时器ID来取消计时器回调的发生,每个计时器都会返回一个ID,是为了取消定时器的方法可以获取到相应的计数器。

<李>

clearInterval (ID)

<李>

clearTimeout (ID)

<编辑> //设置超时调用   var timeoutId=setTimeout(函数(){   警报(“你好World");   }, 1000);//取消掉用的代码   clearTimeout (timeoutId);

setTimeout的执行顺序到底是怎样的?

? ?我们都知道,js是单线程语言,所有的多线程都是假象,都是单线程模拟出来的。浏览器是多进程的,而浏览器的内核(渲染进程)是多线程的。
? ?渲染进程中有一个js引擎线程,这个线程是用来处理javaScript脚本的(例如铬的V8引擎),而我们一直说的javaScript是单线程的就是因为这个。
? ?那么问题来了,既然js是单线程的,那setTimeout的异步是怎么实现的呢? js在解析脚本的时候,会将任务分为两大类,同步任务和异步任务,它们在解析时会进入不同的场所执行。

<李>

同步任务:会进入主线程的执行栈,也就是js引擎线程管理的地方,按照顺序执行

<李>

异步任务:进入事件表中,并注册函数,当回调函数的条件满足时,就会将回调函数放进事件队列中,也就是任务队列中。

? ?当主线程中的任务执行完毕后,也就是执行栈为空时,就会去任务队列中看有没有事件,如果有的话,就进入主线程执行,一直这样循环下去,这就是事件循环机制了,可以参照下面的图理解一下:

? ?也许你对事件循环机制的过程还是不太明白,那么我再解释清楚一点,例如下面这个例子:

console.log(& # 39;开始# 39;)   setTimeout(函数(){   console.log (& # 39; settimeout # 39;)   }, 5000)   console.log(& # 39;结束# 39;)

<强>执行过程:

<李>

开始解析,遇到控制台。日志,是同步任务,进入主线程,直接执行,打印<强> 开始,

<李>

往下走,遇到setTimeout,是异步任务,进入事件表,并注册回调函数;

<李>

再往下走,遇到控制台。日志,直接执行,打印<强> 强;

<李>

5 s后,将回调函数放进事件队列,此时执行栈刚好为空,主线程会去任务队列中取出这个回调函数,执行,打印

JavaScript中setTimeout有什么用