# Yahoo! UI Library

### yui 3.0.0

Yahoo! UI Library > yui > queue-base.js (source view)
Search:
Filters Show Private Show Protected Show Deprecated

    /**
     * The YUI module contains the components required for building the YUI seed file.
     * This includes the script loading mechanism, a simple queue, and the core utilities for the library.
     * @module yui
     * @submodule yui-base
     */

    /**
     * A simple FIFO queue.  Items are added to the Queue with add(1..n items) and
     * removed using next().
     *
     * @class Queue
     * @param item* {MIXED} 0..n items to seed the queue
     */
    function Queue() {
        this._init();
        this.add.apply(this, arguments);
    }

    Queue.prototype = {
        /**
         * Initialize the queue
         *
         * @method _init
         * @protected
         */
        _init : function () {
            /**
             * The collection of enqueued items
             *
             * @property _q
             * @type {Array}
             * @protected
             */
            this._q = [];
        },

        /**
         * Get the next item in the queue.
         *
         * @method next
         * @return {MIXED} the next item in the queue
         */
        next : function () {
            return this._q.shift();
        },

        /**
         * Add 0..n items to the end of the queue
         *
         * @method add
         * @param item* {MIXED} 0..n items
         */
        add : function () {
            Y.Array.each(Y.Array(arguments,0,true),function (fn) {
                this._q.push(fn);
            },this);

            return this;
        },

        /**
         * Returns the current number of queued items
         *
         * @method size
         * @return {Number}
         */
        size : function () {
            return this._q.length;
        }
    };

    Y.Queue = Queue;

Copyright © 2009 Yahoo! Inc. All rights reserved.