如何获取setTimeOut对象并读取它里面的参数?

var timer = null;
var test = function() {
    console.log(111);
}
timer = setTimeout(test, 1000);
console.log(typeof(timer));
console.log(timer);

// 结果
// number
// 1
// 111

各位,既然我将setTimeOut()函数作为对象赋给了timer,为什么timer是一个number对象。如果我想取这个setTimeOut()中的fn和wait参数,以及这个定时器启动后实际运行了多久的时间,要怎么做啊?

阅读 1.6k
3 个回答

setTimeout 的返回值只有一个数字,就像一个编号,这个编号唯一的作用就是用来清除延时器。

如果要保留其中的其他信息的话需要,可以自己记录下来:

var fakeSetTimeout = function(fn, duraion){
    const startTime = Date.now();
    const callback = fn;
    return {
        startTime,
        callback,
        duraion,
        timer: setTimeout(fn, duraion)
    }
}
新手上路,请多包涵

setTimeout()是一个全局方法 它的返回值是一个正整数代表定时器的编号
这个返回值可以传给clearTimeout(=>id)来取消该定时器。

image.png

setTimeout 的返回值是用来 clearTimeout 的,你理解为异步任务的 id 即可。

推荐问题