setTimeout使用中的常见问题

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的函数。

    原文作者:小红依
    原文地址: https://www.jianshu.com/p/6a0780d75e3a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞