JavaScript事件发布/订阅模式原理与用法分析
程序员文章站
2023-11-13 20:21:16
本文实例讲述了javascript事件发布/订阅模式原理与用法。分享给大家供大家参考,具体如下:
1、发布/订阅模式也是诸多设计模式当中的一种;
2、这种方式可以在es...
本文实例讲述了javascript事件发布/订阅模式原理与用法。分享给大家供大家参考,具体如下:
1、发布/订阅模式也是诸多设计模式当中的一种;
2、这种方式可以在es5下相当优雅地处理异步操作;
3、什么是发布/订阅呢?我们举个栗子:
假设fn1,fn2,fn3都可以视作一个事件的发布者,执行它,就会发布一个事件。这个时候,我们可以通过一个事件的订阅者去批量订阅并处理这些事件,包括它们的先后顺序。增加一个消息订阅者的方法:
class asyncfunarr { constructor (...arr) { this.funcarr = [...arr] } next () { const fn = this.funcarr.shift() if (typeof fn === 'function') fn() } run () { this.next() } }
4、调用
//首先将fn1,fn2,fn3订阅 const asyncfunarr = new asyncfunarr(fn1, fn2, fn3) //fn1,fn2,fn3作为分布者分别调用其next()方法: function fn1 () { console.log('function 1') asyncfunarr.next() } function fn2 () { settimeout(() => { console.log('function 2') asyncfunarr.next() }, 500) } function fn3 () { console.log('function 3') asyncfunarr.next() }
5、输出:
// function 1
// function 2
// function 3
6、总结:
通过上述方法,可以实现很多,如异步请求数据等。
7、参考资料:https://developer.mozilla.org/en-us/docs/web/javascript/reference/classes/constructor
更多关于javascript相关内容可查看本站专题:《javascript面向对象入门教程》、《javascript切换特效与技巧总结》、《javascript查找算法技巧总结》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结》
希望本文所述对大家javascript程序设计有所帮助。
上一篇: flash怎么描图案轮廓? flash图案描边的教程
下一篇: 阿里旺旺功能介绍