setTimeout基本用法
setTimeout即超时调用,浏览器会在某个时间后将一个函数添加到事件队列的末尾。
setTimeout(fn,time)
//fn第一个参数表示将要执行的函数
//time第二个参数表示在多少毫秒之后将函数添加到事件队列末尾
常见问题
1. this指向
setTimeout 中的this 指向window,所以如果想让他的this指向当前作用域,可以在setTimeout之前将this保存一下。
let _this = this
setTimeout(()=>{
console.log(_this.xxx)
},1000)
2.在setTimeout中传入函数
注意,如果想传入函数,一个只传函数名
function a() {
console.log(2,new Date())
}
console.log(1,new Date())
setTimeout(a,10000)//注意这里
//1 Mon Oct 15 2018 17:48:53
//2 Mon Oct 15 2018 17:49:03
如果这样的话,会使函数立即调用
function a() {
console.log(2,new Date())
}
console.log(1,new Date())
setTimeout(a(),10000)//注意这里
//1 Mon Oct 15 2018 17:48:53
//2 Mon Oct 15 2018 17:48:53
3.执行时间
setTimeout可能会在设定的时间之后执行。因为他是在到达时间后将函数加入事件队列,如果事件队列里面还有未处理的进程,会把它处理完后才处理setTimeout的函数。