yzt
2023-05-26 2f70f6727314edd84d8ec2bfe3ce832803f1ea77
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
define([], function(){
    // module:
    //      dojo/throttle
    // summary:
    //      This module provide a throttler
 
    return function(cb, wait){
        // summary:
        //      Create a function that will only execute once per `wait` periods.
        // description:
        //      Create a function that will only execute once per `wait` periods
        //      from last execution when called repeatedly. Useful for preventing excessive
        //      calculations in rapidly firing events, such as window.resize, node.mousemove
        //      and so on.
        // cb: Function
        //      The callback to fire.
        // wait: Integer
        //      time to delay before allowing cb to call again.
        var canrun = true;
        return function(){
            if(!canrun){
                return;
            }
            canrun = false;
            cb.apply(this, arguments);
            setTimeout(function(){
                canrun = true;
            }, wait);
        };
    };
});