事件循环防抖

图片说明

//简单版
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;
    }
  }
}
前端问题总结 文章被收录于专栏

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

全部评论

相关推荐

01-30 09:45
燕山大学 Java
喵_coding:这种直接跑就完事了 哪有毕业了才签合同 任何offer和三方都没有的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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