js如何实现发布订阅消息模式?
网友回复
代码如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" /> <script type="text/javascript"> let eventEmitter = { // 缓存列表 list: {}, // 订阅 on (event, fn) { let _this = this; // 如果对象中没有对应的 event 值,也就是说明没有订阅过,就给 event 创建个缓存列表 // 如有对象中有相应的 event 值,把 fn 添加到对应 event 的缓存列表里 (_this.list[event] || (_this.list[event] = [])).push(fn); return _this; }, // 监听一次 once (event, fn) { // 先绑定,调用后删除 let _this = this; function on () { _this.off(event, on); fn.apply(_this, arguments); } on.fn = fn; _this.on(event, on); return _this; }, // 取消订阅 off (event, fn) { let _this = this; let fns = _this.list[event]; // 如果缓存列表中没有相应的 fn,返回false if (!fns) return false; if (!fn) { // 如果没有传 fn 的...
点击查看剩余70%