var handleClose=null;
function widgetOnClose(callback) {
require(['dojo/topic', 'dojo/_base/connect'], function (topic, connect) {
if (handleClose) {
connect.unsubscribe(handleClose);
handleClose=null;
}
handleClose = topic.subscribe("widgetOnClose", callback);
})
}
需要执行某个从操作时,这个操作必须以另一个执行的结果作为参数时,既可在此订阅一个事件,当那边的执行结束时,发布一个消息,通知这边,并传递结果,然后这边拿着这个结果开始执行。
假如现有两个函数
fn1: function topic(){
console.log('我要给你发一个通知哦')
}
fn2: function lisnter1(){
console.log('你要干嘛,我收到你的消息了')
}
现在我需要fn1 通知到后,fn2执行,
function topic(){
console.log('我要给你发一个通知哦')
lisnter1()
}
假如我要有多个函数接到topic的通知后执行呢,就要不停地扩展function topic(){
console.log('我要给你发一个通知哦')
lisnter1()
lisnter2()
lisnter3()
......
}
这样代码就很不容易扩展,所以这个发布/订阅模式就很好的解决这个问题了。我只需要发布一个通知,然后需要在我的这个通知后,执行的操作,你就自己订阅下我这个消息。我一发布,你们需要都去订阅就行。