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();
});

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kaimo313/article/details/130633804
今日推荐