/*
*
* 发布订阅模式
*
* */
function Observe(arr) {
this.data = {};
this.SubData = Array.isArray(arr) ? arr : [arr];
}
// 发布
Observe.prototype.Subscribe = function (type, fun) {
if (!this.data[type]) this.data[type] = [];
this.data[type].push(fun);
this.Release(this.SubData);
};
// 添加订阅类型
Observe.prototype.addSub = function(type){
this.SubData.push(type);
};
// 订阅
Observe.prototype.Release = function (type) {
const status = Array.isArray(type);
if(status) {
type.forEach(item => {
this.data[item].forEach(d => {
//console.log(d);
d();
})
})
}
};
const Vue = new Observe('80');
Vue.Subscribe('80', function () {
console.log("东小区80平米房子2套, 分别在东楼和西楼");
});
/*
* 一旦发布 订阅者将自动更新其数据
* */
Vue.Subscribe('80', function () {
console.log("西小区80平米房子1套, 分别在东4号楼和5号楼");
});
JS发布订阅模式
最新推荐文章于 2023-05-26 14:37:19 发布