【发布时间】:2012-03-11 10:52:28
【问题描述】:
确切地说,我正在用 Javascript、CoffeeScript 和 jQuery 编写程序。我有一个功能,当它们从网络进来时将它们添加到队列中。我想要的是当一些东西被添加到这个队列中以触发一个事件来告诉另一个函数开始从队列中删除项目。有什么好的方法可以做到这一点?
【问题讨论】:
标签: javascript jquery coffeescript dom-events
确切地说,我正在用 Javascript、CoffeeScript 和 jQuery 编写程序。我有一个功能,当它们从网络进来时将它们添加到队列中。我想要的是当一些东西被添加到这个队列中以触发一个事件来告诉另一个函数开始从队列中删除项目。有什么好的方法可以做到这一点?
【问题讨论】:
标签: javascript jquery coffeescript dom-events
这样的事情可能会起作用:
var Queue = {
listeners: [],
objs: [],
add: function(item) {
objs.push(item);
$.each(listeners, function() {
listeners.added(item);
});
}
};
【讨论】:
或者您可以从 Array 继承并重新实现您需要的函数(constructor和push)
class Queue extends Array
constructor : (args...) ->
@_listeners = []
super(args...)
onAdd : (fn) ->
@_listeners.push fn
push : (args...) ->
fn(args...) for fn in @_listeners
super(args...)
# Use it like this :
q = new Queue
q.onAdd (args...) -> console.log("l1", args)
q.onAdd (args...) -> console.log("l2", args)
q.push(32)
q.push(52)
console.log '-'
for v in q
console.log v
# Output :
#
# l1 [ 32 ]
# l2 [ 32 ]
# l1 [ 52 ]
# l2 [ 52 ]
# -
# 32
# 52
【讨论】: