setTimeout

setTimeout 简介

setTimeout是浏览器的js处理引擎或者是nodJs内核帮我们实现的一个方法,它的作用是提供一种定时执行的机制,让使用者可以实现在一个特定的时间后执行一段程序的目的。该函数看起来很简单,使用也很简单,但是它的实现及原理并不简单。

setTimeout 用法

我们可以通过setTimeout实现许多意想不到的功能,比如Promise的实现也依赖setTimeout。大多数情况下我们不必去考虑过多的细节,那么setTimeout的使用就比较简单了

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">
</head><body><script>setTimeout("alert('来啦 老弟!')", 3000);</script></body>
</html>

setTimeout 原理

setTimeout运行机制是:当程序执行到setTimeout函数时,处理器会将代码移出本次执行程序,等到下一次Event Loop时,再检查是否到了指定的时间。如果到了就执行对应的代码。如果不到, 就等到下一轮Event Loop时重新判断。这意味着,setTimeout指定的代码,必须等到本次执行的所有代码都执行完,才会执行。
以下程序和图来源于其他博客

const bar = () => console.log('bar');
const baz = () => console.log('baz');
const foo = () => {console.log('foo');setTimeout(bar, 0);baz();
}
foo();


图中描绘了程序执行时,执行栈中的数据变化,途中红色标出的部分都与任务队列有关,绿色部分表示由于异步程序存在而被打破了原来的顺序。

setTimeout()方法总结相关推荐

  1. DOM中setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

    setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. <html> <head> <script type="text/javascript ...

  2. setTimeout() 方法的返回值

    setTimeout() 方法的返回值 setTimeout() 方法的返回值是一个唯一的数值,这个数值有什么用呢?如果你想要终止 setTimeout() 方法的执行,那就必须使用 clearTim ...

  3. 深入解析Node.js setTimeout方法的执行过程

    深入了解setTimeout源码之前,本有两个选择.一是通过chromium源码分析,二是通过Node.js源码分析.后来发现第一种方案的源码获取成本太大,于是从Node官网获取了几十兆的代码用来了解 ...

  4. setTimeout()方法

    定义和用法 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. setTimeout(function(){alert("Hello");},5000):// ...

  5. setTimeout方法

    很多时候我们编写代码的时候都需要用到定时器,下面我给大家介绍一个方法,利用它我们也能做定时器.下面给大家介绍这个方法的几种常用的写法. SetTimeout方法 第一种写法↓ setTimeout方法 ...

  6. setTimeout()方法用法介绍

    setTimeout()方法用法介绍 setTimeout setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 语法 setTimeout(code,millisec) setT ...

  7. setTimeout()方法的使用

    setTimeout()方法的使用 使用方式:该方法用于在指定的毫秒数后调用函数或计算表达式. 例一: function showData(){ setTimeout(() =>{let exp ...

  8. 利用setTimeout方法控制JS中方法的执行顺序

    JS方面中有A和B方法,B必须在A执行完之后才能执行,怎么保证呢? 1.首先设一个标志(isAFinish),用来标识A是否执行完. 2.B方法执行的时候,判断 var isAFinish=false ...

  9. Window.clearTimeout() 方法取消由 setTimeout() 方法设置的 timeout

    clearTimeout()方法的参数必须是由setTimeout()返回的ID值.例子: <!DOCTYPE html> <html> <head> <me ...

最新文章

  1. 显示一个屏幕,隐藏其他屏幕
  2. Codeforces Round #401 (Div. 1) C(set+树状数组)
  3. XML配置里的Bean自动装配与Bean之间的关系
  4. 文本挖掘(part1)--文本挖掘概述
  5. 【IT界的厨子】酱香鲈鱼
  6. 嘉益仕(Litns)带您读懂MES系统:选型篇
  7. 睡眠音频分割及识别问题(五)--YAMNet进一步分析
  8. 怎样防止程序重复开启?
  9. linux--vi的使用
  10. 以下系统组件依赖此服务器,Maven中配置本地依赖组件包
  11. Web Developer——瑞士军刀一样的FF插件
  12. tcl如何获取键盘输入
  13. 7-7 评分规则 (5 分)
  14. WCF REST(9篇)
  15. 二阶振荡环节的谐振频率_什么是谐振器?谐振器与振荡器有什么区别?
  16. 理解SNS系列之二:更进一步,近观SNS
  17. ps软件打不开计算机受限制,win10系统打不开ps软件的处理技巧
  18. 机械制图之工程图线型
  19. redis+mc review
  20. 千锋重庆Java基础之Java拼图游戏的代码

热门文章

  1. Debug命令详细总结
  2. Android——通过Service实现控制游戏的背景音乐
  3. 硅谷大佬:我为什么要逃离谷歌?
  4. Horizon Daas 桌面连接常见错误
  5. 为什么me域名不能备案_.me域名是否能注册,能不能备案?
  6. 在Windows邮箱中登录Gmail的解决方案
  7. vue中 el-input手机号码或座机号码做验证
  8. Linux操作系统分析------期末总结、感谢老师、祝我们越来越好
  9. 下载easy connect MAC版本地址
  10. Android 滑动切换(首页展示,图片、新闻自动切换,循环切换,自动和手动)