JavaScript定时器

JavaScript 专栏收录该内容
24 篇文章 0 订阅

JavaScript定时器

思考

在讨论之前,先来思考一个问题,定时器真的是定时执行的么?

首先来看一段代码:

console.log('定时器启动前')
var start = Date.now()
setTimeout(function () {
  console.log('定时器执行了', Date.now()-start);
}, 200)

console.log('定时器启动后');

将代码运行几次,输出不同的时间结果,你可以手动测试一下

在这里插入图片描述

在这里插入图片描述

可以看到,定时器一般是会延迟一些的,但这是可以接受的。

但是如果运行下面的代码,定时器将会延迟很长时间执行。

setTimeout(function () {
  console.log('定时器执行了', Date.now()-start);
}, 200)

console.log('定时器启动后');

// 循环多次
for (let i = 0; i < 1000000000; i++) {
}

上面的代码的输出结果如下:

在这里插入图片描述

可以看到,定时器延时了很长时间才执行完毕。


上面定时器出现延时的原因是因为js是单线程的,所以JavaScript中的定时器是运行在主线程。而当有其他耗时任务执行时,定时器则会延迟。

JavaScript引擎执行代码的基本流程

由上面的代码可以得出,JavaScript引擎执行代码的基本流程如下

  1. 先执行初始化代码
  • 设置定时器
  • 绑定监听
  • 发送ajax请求
  1. 之后才会执行回调函数
  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 黑客帝国 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值