Open yaogengzhu opened 4 years ago
class Chat { constructor() { this.clientEvent = {} } subscribe(key, fn) { if (!this.clientEvent[key]) { this.clientEvent[key] = [] // 创建一个缓存列表 } this.clientEvent[key].push(fn) // 加入缓存列表中 } dispatch(data = { key: '', data: {} }) { const fns = this.clientEvent[data.key] if (!fns && fns.length === 0) { return } fns.forEach(fn => fn(data.data)) } } let chat = new Chat() module.exports = chat
// 调用
const chat = require('./subscribe.js') // 先写订阅的事件 chat.subscribe('send', function(data) { console.log('小明给我发消息来, 对我说: ' + data.name) }) chat.dispatch({ key: 'send', data: { name: 'yaogeng, 您好', age: 26 } }) chat.dispatch({ key: 'send', data: { name: 'yaogeng, 您好哦!', age: 26 } }) chat.dispatch({ key: 'send', data: { name: 'yaogeng, 我知道了哦', age: 26 } })
发布订阅初探
// 调用