# Yahoo! UI Library

### yui 3.1.1

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

    /**
     * Provides a throttle/limiter for function calls
     * @module yui
     * @submodule yui-throttle
     */

    /**
     * Throttles a call to a method based on the time between calls.
     * @method throttle
     * @for YUI
     * @param fn {function} The function call to throttle.
     * @param ms {int} The number of milliseconds to throttle the method call. Can set
     * globally with Y.config.throttleTime or by call. Passing a -1 will disable the throttle. Defaults to 150
     * @return {function} Returns a wrapped function that calls fn throttled.
     * @since 3.1.0
     */

    /*! Based on work by Simon Willison: http://gist.github.com/292562 */

    var throttle = function(fn, ms) {
        ms = (ms) ? ms : (Y.config.throttleTime || 150);

        if (ms === -1) {
            return (function() {
                fn.apply(null, arguments);
            });
        }

        var last = (new Date()).getTime();

        return (function() {
            var now = (new Date()).getTime();
            if (now - last > ms) {
                last = now;
                fn.apply(null, arguments);
            }
        });
    };

    Y.throttle = throttle;

    // We added the redundant definition to later for backwards compatibility.
    // I don't think we need to do the same thing here
    // Y.Lang.throttle = throttle;

Copyright © 2010 Yahoo! Inc. All rights reserved.