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


    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);
  • 相关阅读:
    mysql 行号
    java 异常链
    springsecurity密码加密
    java 四舍五入
    ArrayList的使用及原理
    java 匿名内部类
    java 克隆
    logback的配置
    信号量 Semaphore
    障碍器 CyclicBarrier
  • 原文地址:https://www.cnblogs.com/Answer1215/p/13061227.html
Copyright © 2020-2023  润新知