标签:== push cal each type 长度 对象 关系 成功
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方法,如果长度等于指定时,则执行方法
标签:== push cal each type 长度 对象 关系 成功
原文地址:https://www.cnblogs.com/qisexin/p/13197544.html