All files / mframejs/behavior throttle.ts

25% Statements 3/12
0% Branches 0/2
0% Functions 0/4
18.18% Lines 2/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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  29x     29x                                                    
 
import { behavior } from '../decorator/exported';
 
@behavior('throttle')
export class ThrottleBehavior {
    public name: string;
    constructor(binding: any, args: any) {
        const time = args[0] || 100;
        if (binding.eventHandlerBinded) {
 
            binding.eventHandlerBindedBackup = binding.eventHandlerBinded;
 
            binding.detachedBackup = binding.detached;
 
            binding.detached = function () {
                binding.detachedBackup();
            };
 
            binding.eventHandlerBinded = function () {
                if (!this.timerBehavior) {
                    this.timerBehavior = setTimeout(() => {
                        binding.eventHandlerBindedBackup();
                        this.timerBehavior = null;
                    }, time);
                }
            }.bind(binding);
 
        }
    }
}