4 # 发布订阅模式

简介: 4 # 发布订阅模式

发布订阅模式

发布订阅模式分成两个部分:订阅和发布没有明显的关联

  • on(订阅):就是把一些函数维护到一个数组中
  • emit(发布):就是让数组中的函数依次执行

下面用发布订阅模式实现多个异步请求同时获取最终结果:

let fs = require("fs");
let person = {};
let event = {
    arr: [],
    on(fn) {
        this.arr.push(fn);
    },
    emit() {
        this.arr.forEach((fn) => fn());
    },
};
event.on(function () {
    if (Object.keys(person).length === 2) {
        console.log("event--person--->", person);
    }
});
fs.readFile("./file/name.txt", "utf-8", function (err, data) {
    console.log("name.txt--->", err, data);
    person.name = data;
    event.emit();
});
fs.readFile("./file/age.txt", "utf-8", function (err, data) {
    console.log("age.txt--->", err, data);
    person.age = data;
    event.emit();
});

目录
相关文章
|
6月前
|
消息中间件 存储 Cloud Native
揭秘发布订阅模式:让消息传递更高效
揭秘发布订阅模式:让消息传递更高效
揭秘发布订阅模式:让消息传递更高效
|
消息中间件 Java Maven
消息中间件系列教程(07) -RabbitMQ -案例代码(点对点队列模式)
消息中间件系列教程(07) -RabbitMQ -案例代码(点对点队列模式)
71 1
|
消息中间件 Java Maven
消息中间件系列教程(03) -ActiveMQ -点对点&发布订阅模式
消息中间件系列教程(03) -ActiveMQ -点对点&发布订阅模式
95 0
|
消息中间件 存储 Java
消息中间件系列教程(09) -RabbitMQ -案例代码(发布订阅模式)
消息中间件系列教程(09) -RabbitMQ -案例代码(发布订阅模式)
63 0
|
6月前
|
消息中间件 Java
RabbitMQ中的消息发布-订阅模式是什么?如何实现?
RabbitMQ中的消息发布-订阅模式是什么?如何实现?
169 0
|
6月前
|
消息中间件
消息系统:点对点&发布订阅?
消息系统:点对点&发布订阅?
76 0
EMQ如何实现点对点消息和发布订阅消息?
EMQ(Erlang MQTT Broker)通过 MQTT 协议实现了点对点消息和发布订阅消息两种消息传递模式。
448 2
|
消息中间件 负载均衡 Kafka
Kafka如何实现点对点消息和发布订阅消息?
Kafka 可以同时支持点对点消息和发布订阅消息模型
962 0
|
设计模式
关于观察者模式/发布订阅模式我所知道的
关于观察者模式/发布订阅模式我所知道的
105 0