在Javascript中将某个内容添加到队列或数组时激发事件



确切地说,我正在用Javascript、CoffeeScript和jQuery编写一个程序。我有一个功能,当它们从网络进入时,将它们添加到队列中。我想要的是当某个事件被添加到这个队列中时,告诉另一个函数开始从队列中删除项目。这样做的好方法是什么?

类似的东西可以工作:

var Queue = {
    listeners: [],
    objs: [],
    add: function(item) {
        objs.push(item);
        $.each(listeners, function() {
            listeners.added(item);
        });
    }
};

或者您可以从Array继承,只需重新实现所需的函数(constructorpush

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

最新更新