1、实现发布--订阅模式
(1)首先要指定好谁充当发布者
(2)然后给发布者添加一个缓存列表,用于存放回调函数以便通知订阅者(记录客户的花名册)
(3)最后发布消息的时候,发布者遍历这个缓存列表,依次触发里面订阅者回调函数(遍历花名册,挨个发短信)
另外,我们可以在回调函数填入一些参数,订阅者可以接受这些参数,这是很有必要的,如加入房子的单价、面积信息。订阅者得到这些信息可以自行处理。
var saleOffices = {} // 售楼处 发布者
saleOffices.clientList = [] // 缓存列表 存放订阅者的回调函数
saleOffices.listen = function(fn) { // 添加订阅者
this.clientList.push(fn) // 订阅者的消息添加进缓存列表
}
saleOffices.trigger = function() { // 发布信息
for(let i = 0, fn; fn=this.clientList[i++];) {
fn.apply(this, arguments);
}
}
saleOffices.listen(function(price, squareMeter) {
console.log('price='+price)
console.log('squareMeter='+squareMeter)
})
saleOffices.listen(function(price, squareMeter) {
console.log('price='+price)
console.log('squareMeter='+squareMeter)
})
saleOffices.trigger(2000000, 100)
saleOffices.trigger(199998, 100)
打印结果:price=2000000
squareMeter=100
price=2000000
squareMeter=100
price=199998
squareMeter=100
price=199998
squareMeter=100
这里可以看到,每个订阅者都收到两个房价的信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。