zoukankan      html  css  js  c++  java
  • [Javascript] Broadcaster + Operator + Listener pattern -- 4. Concat

    import { compose } from "ramda";
    let input = document.getElementById("input");
    
    let inputBroadcaster = (listener) => {
      input.addEventListener("input", listener);
    
      return () => {
        input.removeEventListener("input", listener);
      };
    };
    
    let log = (value) => {
      console.log(value);
    };
    
    let getTargetValue = (broadcaster) => (listener) => {
      let stop = broadcaster((event) => {
        listener(event.target.value);
      });
      return stop;
    };
    
    let done = Symbol("done'");
    
    let timeout = (listener) => {
      setTimeout(() => {
        listener(done);
      }, 3000);
    };
    /*
    let concat = (firstBroadcaster, secondBroadcaster) => (listener) => {
      firstBroadcaster((value) => {
        if (value === done) {
          secondBroadcaster(listener);
        }
      });
    };*/
    
    let concat_forloop = (...broadcastera) => (listener) => {
      broadcastera.forEach((broadcaster, i) => {
        broadcaster((value) => {
          if (value === done && i + 1 <= broadcastera.length - 1) {
            broadcastera[i + 1](listener);
          }
        });
      });
    };
    
    let concat_recusive = (...broadcastera) => (listener) => {
      let i = 0;
    
      let setup = (broadcaster) => {
        broadcaster((value) => {
          if (value === done) {
            ++i <= broadcastera.length - 1
              ? setup(broadcastera[i])
              : listener(done);
          } else {
            listener(value);
          }
        });
      };
    
      setup(broadcastera[i]);
    };
    
    concat_recusive(timeout, inputBroadcaster)(log);
  • 相关阅读:
    linux 学习随笔-shell基础知识
    linux 学习随笔-压缩和解压缩
    解析xml的4种方法详解
    集合工具类
    Map概述
    List集合概述
    Java集合框架
    Spring JdbcTemplate详解
    关于c3p0数据库连接池的简单使用
    Java通过JDBC封装通用DAO层
  • 原文地址:https://www.cnblogs.com/Answer1215/p/13755927.html
Copyright © 2011-2022 走看看