《深入浅出 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) 来重新设置可监听的数量。
网友评论