事件循环防抖

图片说明

//简单版
function debounce(fn) {
  let isExecuted = false;
  return function () {
    if (!isExecuted) {
      isExecuted = true;
      new Promise((resolve, reject) => {
        fn();
        resolve();
      }).then(() => {
        isExecuted = false;
      })
    }
  }
}
//考虑fn带参数及fn可能有返回值情况
function debounce(fn) {
  let isExecuted = false;
  return function (...args) {
    if (!isExecuted) {
      isExecuted = true;
      let res;
      new Promise((resolve, reject) => {
        res = fn.apply(null, args);
        resolve();
      }).then(() => {
        isExecuted = false;
      })
      return res;
    }
  }
}
前端问题总结 文章被收录于专栏

总结一些前端常见的面试笔试题,来和大家分享鸭

全部评论

相关推荐

06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务