#博学谷IT学习技术支持
目录
-
定时器
- setTimeout( ) 定时器
- setTimeout( ) 方法用于设置一个定时器,该定时器在定时器到期后执行调用函数
- window 可以省略
- 这个调用函数可以直接写函数,或者写函数名或者采取字符串'函数名()' 三种形式,最后一种不推荐
- 延迟的毫米数省略默认是0, 如果写,单位必须是毫秒
- 因为定时器可能有很多,所以我们经常给定时器赋值一个标识符(名称)
- setTimeout( ) ——回调函数(需要等待时间,时间到了才去调用这个函数,即回头调用,上一件事干完再回头调用这个函数)
- 停止setTimeout( ) 定时器
- clearTimeout() 方法取消先前用过调用 setTimeout()建立 的定时器
- window 可以省略
- 里面的参数就是定时器的标识符(名字)
- setInterval( ) 定时器
- 第一次执行也是间隔毫秒数之后执行,之后每隔毫秒数就执行一次
- 停止setInterval( ) 定时器
- window 可以省略
- 里面的参数就是定时器的标识符
- ⚠️区别
- 案例
- 5秒自动关闭广告
- ⚠️京东秒杀倒计时(封装调用函数,防止第一次刷新时页面有空白)
- 发送短信(60秒倒计时)
- 5秒自动关闭广告
- this
- 一般情况下this的最终指向的是那个调用它的对象
- 1. 全局作用域或者普通函数中this指向全局对象window( 注意定时器里面的this指向window)
- 2. 方法调用中谁调用this指向谁
- 3. 构造函数中this指向构造函数的实例
- setTimeout( ) 定时器
-
JS执行队列
- JS是单线程,同一个时间只能做一件事。
- 同步和异步
- 单线程导致的问题就是后面的任务等待前面任务完成,如果前面任务很耗时(比如读取网络数据),后面任务不得不一直等待!!
- 同步:前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了(10分钟之后),再去切菜,炒菜。
- 异步:你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。
- 本质区别:流水线上各个流程的执行顺序不同。
- JS执行机制
- 1、先执行 执行栈中的同步任务
- 2、异步任务(回调函数)放在任务队列中
- 3、一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行
- 由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环