【问题标题】:Fire an event when something is added to queue or array in Javascript在 Javascript 中将某些内容添加到队列或数组时触发事件
【发布时间】:2012-03-11 10:52:28
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery coffeescript dom-events


    【解决方案1】:

    这样的事情可能会起作用:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2010-10-06
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-19
        • 2020-06-02
        • 1970-01-01
        相关资源
        最近更新 更多