发布订阅模式

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:/

订阅发布模式概念基础

Android App 在片段中创建 ListView 引用时关闭

ActiveMQ入门系列三:发布/订阅模式