首页 > 编程语言 > 详细

[Javascript] Broadcaster, operator, listener pattern: Write a debounce broadcaster -- 1

时间:2020-06-07 17:20:04      阅读:30      评论:0      收藏:0      [点我收藏+]
const compose = (...fns) => (...args) =>
  fns.reduceRight((res, fn) => [fn.call(null, ...res)], args)[0];

const input = document.getElementById("nameInput");

const log = value => {
  console.log(value);
};

const logValue = broadcaster => listener => {
  broadcaster(event => {
    listener(event.target.value);
  });
};

const inputEvent = listener => input.addEventListener("input", listener);

const debounce = time => broadcaster => {
  let timer = null;
  return listener => {
    broadcaster(event => {
      if (timer) {
        clearTimeout(timer);
      }
      timer = setTimeout(() => {
        listener(event);
      }, time);
    });
  };
};

const debounceInputValue = compose(
  logValue,
  debounce(500)
);

debounceInputValue(inputEvent)(log);

 

[Javascript] Broadcaster, operator, listener pattern: Write a debounce broadcaster -- 1

原文:https://www.cnblogs.com/Answer1215/p/13061227.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!