首页 > 编程语言 > 详细

[Javascript] Broadcaster + Operator + Listener pattern -- 3 Stop with condition

时间:2020-09-30 20:03:41      阅读:35      评论:0      收藏:0      [点我收藏+]
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 stopOnCond = (cond) => (broadcaster) => (listener) => {
  let stop = broadcaster((value) => {
    if (cond(value)) {
      stop();
    } else {
      listener(value);
    }
  });

  return stop;
};

const stopOnStop = stopOnCond((value) => value === "stop");
const stopOnInputStop = compose(stopOnStop, getTargetValue);
stopOnInputStop(inputBroadcaster)(log);

 

[Javascript] Broadcaster + Operator + Listener pattern -- 3 Stop with condition

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

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