+
95
-

js如何实现发布订阅消息模式?

js如何实现发布订阅消息模式?


网友回复

+
15
-

代码如下:

<!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%

我知道答案,我要回答