source: trunk/web/addons/job_monarch/lib/extjs/source/util/DelayedTask.js @ 619

Last change on this file since 619 was 619, checked in by ramonb, 15 years ago

lib/:

  • added new AJAX dependancies: ExtJS, pChart, Lightbox2
File size: 2.0 KB
Line 
1/*
2 * Ext JS Library 2.2.1
3 * Copyright(c) 2006-2009, Ext JS, LLC.
4 * licensing@extjs.com
5 *
6 * http://extjs.com/license
7 */
8
9/**
10 * @class Ext.util.DelayedTask
11 * Provides a convenient method of performing setTimeout where a new
12 * timeout cancels the old timeout. An example would be performing validation on a keypress.
13 * You can use this class to buffer
14 * the keypress events for a certain number of milliseconds, and perform only if they stop
15 * for that amount of time.
16 * @constructor The parameters to this constructor serve as defaults and are not required.
17 * @param {Function} fn (optional) The default function to timeout
18 * @param {Object} scope (optional) The default scope of that timeout
19 * @param {Array} args (optional) The default Array of arguments
20 */
21Ext.util.DelayedTask = function(fn, scope, args){
22    var id = null, d, t;
23
24    var call = function(){
25        var now = new Date().getTime();
26        if(now - t >= d){
27            clearInterval(id);
28            id = null;
29            fn.apply(scope, args || []);
30        }
31    };
32    /**
33     * Cancels any pending timeout and queues a new one
34     * @param {Number} delay The milliseconds to delay
35     * @param {Function} newFn (optional) Overrides function passed to constructor
36     * @param {Object} newScope (optional) Overrides scope passed to constructor
37     * @param {Array} newArgs (optional) Overrides args passed to constructor
38     */
39    this.delay = function(delay, newFn, newScope, newArgs){
40        if(id && delay != d){
41            this.cancel();
42        }
43        d = delay;
44        t = new Date().getTime();
45        fn = newFn || fn;
46        scope = newScope || scope;
47        args = newArgs || args;
48        if(!id){
49            id = setInterval(call, d);
50        }
51    };
52
53    /**
54     * Cancel the last queued timeout
55     */
56    this.cancel = function(){
57        if(id){
58            clearInterval(id);
59            id = null;
60        }
61    };
62};
Note: See TracBrowser for help on using the repository browser.