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

时间:2012-02-21 04:43:40

标签: javascript jquery javascript-events coffeescript

我正在用javascript,CoffeeScript和jQuery编写一个程序。我有一个功能是在从网络进入队列时将其添加到队列中。我想要的是当某个东西被添加到这个队列中以便触发事件以告诉另一个函数开始从队列中删除项目。什么是一个好方法呢?

2 个答案:

答案 0 :(得分:4)

这样的事情可行:

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

答案 1 :(得分:0)

或者您可以继承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