定时器基础
1 | var timer1 = setTimeout(function(){ |
- 定时器的返回值: 当我们设置定时器(不管是setTimeout还是setInterval),都会有一个返回值,返回值是一个数字,代表当前实在浏览器中设置的第几个定时器(返回的是定时器序号)
- setTimeout和setInterval虽然是处理不同需求的定时器,但是都是浏览器的定时器,所以设置的时候,返回的序号是依次排列的
- setInterval设置完成定时器会有一个返回值,不管执行多少次,这个代表序号的返回值不变(设置定时器就有返回值,执行多少次是定时器的处理)
清除定时器
- clearTimeout([定时器排队序号])
- clearInterval([定时器排队序号])
- 定时器需要手动清除
1 | var t1 = setTimeout(function(){ |
实现动画效果
1 | function imgFade(curImg){ |
JS中的同步和异步编程
JS是单线程的(一次只能执行一个任务,当前任务没有完成,下面任务不进行处理)
同步编程(sync:synchronize):任务是按照顺序一件件的完成的,当前任务没有完成,下面的任务部进行处理
异步编程(async)当前任务再等待执行的时候,我们不去执行,继续完成下面的任务,当下面的任务完成后,而是也到达等待的时间了,采取完成当前的任务
定时器都是异步编程的
所有的时间绑定都是异步编程的
AJAX中有异步编程
有些人把回调函数当作异步编程(牵强)
1 | //=> 同步编程以及如何验证当前任务小号的时间或者性能 |
1 | //=> 项目中要避免死循环,因为循环是同步编程,当前循环无法结束,后续的任务操作都执行不了 |
1 | var n = 0; |
同步异步编程的核心原理
- JS中有两个任务队列(存放任务列表的空间就是任务队列)
- 1、主任务队列:同步执行任务(从上到下一次执行)
2、等待任务队列:异步执行任务(主任务队列中的任务全部完成,把等待任务队列中的任务拿到主任务队列中执行(哪一个先到,先找哪一个,同时到,按照创建顺序来),当前这个任务完成后,再到等待中去找其他任务)
1 | setTimeout(function(){ |
JS中固定步长和固定时间的匀速运动动画
1、步长固定(每走一步多少固定),但是多长时间运动完成不固定
1 | var oBox = document.getElementById('box'), |
2、固定时间的匀速动画
- target: 目标值
- start: 起始值
- change:总距离 target-start
- duration: 总时间
- time:已经运动的时间
1 | function linear(time, begin, change, duration){ |
多方向固定时间匀速运动
1 |
|