发布订阅模式
Posted qisexin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发布订阅模式相关的知识,希望对你有一定的参考价值。
let fs = require(‘fs‘);
// 发布订阅 发布和订阅没关系 中间通过数组进行关联
function Events() {
this.callbacks = [];
this.results = [];
}
// 订阅
Events.prototype.on = function (callback) {
this.callbacks.push(callback);
}
// 发布
Events.prototype.emit = function (data) {
this.results.push(data);
this.callbacks.forEach(cb=>cb(this.results));
}
let e = new Events();
e.on(function (res) {
if (res.length === 2) {
console.log(res);
}
});
// 读文件
fs.readFile(‘./a.txt‘, ‘utf8‘, function (err, data) {
e.emit(data);
});
fs.readFile(‘./b.txt‘, ‘utf8‘, function (err, data) {
e.emit(data);
});
//发布订阅代码实现
发布订阅模式我理解就是面向对象的一种思想,也是一种代码的设计模式,就和java的三层架构一样.
发布订阅从名字分析则知道有两个角色,分别是发布者和订阅者,每个角色又有不同的事件.
发布者可以发布内容,在发布之后订阅者可以监听,可以得到内容.
代码中间通过一个Events代表事件,在Events上有两个数组,发布者通过在Events的原型上调用emit方法,如果发布成功,则通过执行 this.results.push(data)
向数组中添加事件在调用回调函数遍历内容,订阅者有一个on方法,如果长度等于指定时,则执行方法
以上是关于发布订阅模式的主要内容,如果未能解决你的问题,请参考以下文章
EventBus发布-订阅模式 ( Android 中使用 发布-订阅模式 进行通信 )
javascript UV Index Monitor App订阅PubNub并显示UV索引值。博文的代码片段。在这里查看项目:https:// githu
c_cpp UV Index Indicator订阅PubNub并使用颜色显示UV索引值。博文的代码片段。在这里查看项目:https:/