javascript - 问一个关于闭包中的setTimeout的问题

查看:96
本文介绍了javascript - 问一个关于闭包中的setTimeout的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

function debounce(fn, delta, context) {
  var timeoutID = null;
  
  return function() {
    if(timeoutID) {
      clearTimeout(timeoutID);
      console.log(timeoutID);
    }
   
    
    var args = arguments;
    
    timeoutID = setTimeout(function() {
      fn.apply(context, args);
    }, delta);
    
  }
}

function D() {
  document.body.innerHTML += 'D<br>'
}
window.addEventListener('click', debounce(D, 1000));

解决方案

你看到的那个数字是变量 timeoutID 的值,它是由 setTimeout 函数返回的,它的值是一个数字。它代表一个定时器的 id ,每次点击后这个值会变化。例如在 Chrome 浏览器中,第一次点击后它的值是 1, 第二次点击后是 2,以此类推。

它只代表定时器的 id,不代表定时器是否已经已经完成或者被取消。

这篇关于javascript - 问一个关于闭包中的setTimeout的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆