javascript发布订阅回调

时间:2013-03-27 14:57:34

标签: javascript jquery

场景: - 带有已检查&的json未经检查的项目计数需要发送到一个公共函数,而该公共函数又会进行一些基本验证或显示错误。每个句柄都有不同的功能,不同的css / js团队称这个功能&根据常用功能结果(true / false),为json提供check / uncheck状态的每个团队/模块都会执行相关操作。因此,两个共同的功能(比如getcount)&调用此函数的每个独立团队都依赖于常用函数的结果独立操作dom / css。共同的功能也是独立操纵dom。

而不是传统的调用函数的方式(比如getCount({“chk”:2,“unchk”:4}))我正在寻找更加清晰的pusblish / subcribe方法,如Jquery&易于传达给所有人作为唯一的主题名称& contract / json需要描述(也减少if / else子句)。由于通用功能是用户和当每个独立函数发布生成的chk / unchek json时,公共函数可以使用发布/订阅方法轻松地进行操作,但是独立方法也必须执行计数操作,这只有在订阅函数可以发送结果时才可能。我知道javascript是异步的,我也明白常用的方法可以发布(比如说“resultOfGetCount”),每个独立的功能/模块都可以监听&执行操作但是在普通的javascript或jquery中有哪些方法在哪个订阅者可以以类似于$ .ajax的方式向发布者发送结果,其中在服务器调用完成后调用回调函数。

寻找这种方案的最佳方法。

1 个答案:

答案 0 :(得分:1)

以下是来自此blog post

的jQuery中的简单发布订阅模型
var exampleHandle = function(){
    //do stuff when topic is published
    ...
}

function subscribe(topic,handle){
    $("#subscription").bind(topic,handle);
}

function publish(topic,params){
    $("#subscription").trigger(topic,params)
}

function unsubscribe(topic,handle){
    $("#subscription").unbind(topic,handle);
}

您可以使用简单字符串作为主题来订阅或取消订阅主题,并将句柄作为回调函数附加。如有必要,句柄也可用于稍后取消订阅该主题。

  

该方法基于jQuery的触发器和绑定函数。这些   允许您在元素上侦听自定义事件,并手动进行   触发元素上的事件。这提供了基本的主干   简单的订阅模式。

     

如果应用程序元素想要   订阅主题,他们将处理程序绑定到“订阅”   元件”。这可以是页面上的指定元素,也可以是   窗口元素。您当然也可以使用不同的元素   不同的订阅。然后,当某些内容发布到该主题时,   处理程序函数将执行。

     

对于发布,函数可以通过   发布功能的主题和参数。这称为jQuery   触发器以引发事件主题,传递参数。   这些参数传递给句柄函数。

     

如果元素想要   取消订阅,他们可以传递主题和处理功能   取消订阅方法。请注意,句柄必须相同   用于最初订阅的函数对象,而不是副本或   类似的功能。你也可以使用jQuery的unbind取消所有   通过仅指定没有的主题来订阅主题   处理功能。