johnloy
2/14/2018 - 12:09 AM

Timeoutify a callback. From "You Don't Know JS: Async and Performance"

Timeoutify a callback. From "You Don't Know JS: Async and Performance"

function timeoutify(fn,delay) {
    var intv = setTimeout( function(){
            intv = null;
            fn( new Error( "Timeout!" ) );
        }, delay )
    ;

    return function() {
        // timeout hasn't happened yet?
        if (intv) {
            clearTimeout( intv );
            fn.apply( this, arguments );
        }
    };
}