(四)JS学习笔记 - 模式 - 观察者模式
理解观察者模式
简单的讲,一个对象作为特定任务或是另一对象的活动的观察者,并且在这个任务或活动发生时,利用事件的形式通知观察者。
观察者的使用场合
当一个对象的改变需要同时改变其它对象,并且它不知道具体有多少对象需要改变的时候,就应该考虑使用观察者模式。
例如,用户A,B,C分别订阅某服务,当服务有更新是可设定更新、下载等操作。
模拟实现
定义Observable对象,其内部包含了2个方法:add(订阅)与fire(发布)方法
// 观察者 var Observable = { callbacks: [], add: function(fn) { this.callbacks.push(fn); }, fire: function() { this.callbacks.forEach(function(fn) { fn(); }) } }
订阅
1 Observable.add(function() { 2 console.log(1); 3 }) 4 Observable.add(function() { 5 console.log(2); 6 })
发布
Observable.fire(); // 1, 2
实际应用
实际业务中,如请求某个ajax后需要执行多个方法,数据处理、渲染页面、其他业务等,可以使用观察者
1 Observable.add(function() { 2 //pocessData 3 }) 4 5 Observable.add(function() { 6 $(‘test‘).html(data.a) 7 $(‘test2‘).html(data.b) 8 $(‘test3‘).html(data.c) 9 }) 10 11 Observable.add(function() { 12 //pocessOther 13 }) 14 15 $.ajax({ 16 url: "test.html", 17 context: document.body 18 }).done(function(data) { 19 Observable.fire(data) 20 })
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。