场景: - 带有已检查&的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的方式向发布者发送结果,其中在服务器调用完成后调用回调函数。
寻找这种方案的最佳方法。
答案 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取消所有 通过仅指定没有的主题来订阅主题 处理功能。