我正在用javascript,CoffeeScript和jQuery编写一个程序。我有一个功能是在从网络进入队列时将其添加到队列中。我想要的是当某个东西被添加到这个队列中以便触发事件以告诉另一个函数开始从队列中删除项目。什么是一个好方法呢?
答案 0 :(得分:4)
这样的事情可行:
var Queue = {
listeners: [],
objs: [],
add: function(item) {
objs.push(item);
$.each(listeners, function() {
listeners.added(item);
});
}
};
答案 1 :(得分:0)
或者您可以继承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