美文网首页日常刻书
发布/订阅模式

发布/订阅模式

作者: F_wind | 来源:发表于2020-12-31 09:50 被阅读0次

    《深入浅出 Node.js》阅读随笔

    Node.js 下使用发布/订阅的模式写程序,可以很优雅的解藕业务逻辑,尤其是在处理异步逻辑的时候。举个例子:你小 A 和你的同事小 B,在一个工作日的上午,都在快餐店订阅了午餐服务,当快餐店在中午把美食烹饪完成以后,会正式发布出来,此时你俩就会及时收到通知,然后快乐的去就餐了。

    const { EventEmitter } = require("events");
    const lanch = new EventEmitter();
    /**
     * 订阅午餐
     */
    const subLanch = (name) => {
      console.log(`${name}已完成午餐订阅!`);
      lanch.on(`finish`, () => {
        console.log(`${name}你好!食物已烹饪完毕,请来用餐!`);
      });
    };
    /**
     * 发布午餐
     */
    const pubLanch = () => {
      lanch.emit(`finish`);
    };
    
    // 小 A 订阅了午餐提醒
    subLanch(`小A`);
    // 小 B 订阅了午餐提醒
    subLanch(`小B`);
    
    /**
     * 假如 3 秒钟以后,午餐烹饪完成
     */
    setTimeout(() => {
      // 发布午餐完成通知
      pubLanch();
    }, 3000);
    

    注意:EventEmitter 默认只能添加 10 个监听器,如果有超过 10 的业务需求,需要使用 setMaxListeners(n) 来重新设置可监听的数量。

    相关文章

      网友评论

        本文标题:发布/订阅模式

        本文链接:https://www.haomeiwen.com/subject/bjrloktx.html