发布订阅模式的代码实现

发布订阅模式的代码实现

let fabuObj={
    // 存放订阅的信息 {}
    saveData:{},
    //实现订阅 把信息存放到saveData
    on(type,cb){//type 订阅的类型 cb执行的操作

        //判断saveData 是否存在
        if (!this.saveData[type]) {
            this.saveData[type]=[]
        }
        //把订阅操作放进去
        this.saveData[type].push(cb)
    },

    //发布
    emit(type,...canshu){
        //判断 发布的事情有人订阅没有
        if (!this.saveData[type].length) {
            console.log("无人订阅 无需通知");
        }else{
            console.log( this.saveData[type].length);
            this.saveData[type].forEach(element => {
                element.apply(this,[...canshu])
            });
        }

    }
}

//创建一个发布订阅结构
let baozipu=Object.create(fabuObj)

//包子订阅
baozipu.on("三鲜包子",function (params) {
    console.log("小明订购了三鲜包子还有"+params);
})
baozipu.on("三鲜包子",function (params) {
    console.log("小久久订购了三鲜包子还有"+params);
})
baozipu.on("三鲜包子",function (params) {
    console.log("小轻轻订购了三鲜包子还有"+params);
})

//包子铺做好了 通知
baozipu.emit("三鲜包子",20)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值