How to return value from debounced function in javascript?

Victor Marchuk picture Victor Marchuk · Jun 15, 2016 · Viewed 7.6k times · Source

I have a code like that:

var originalFunction = function() {
    return 'some value';
};

var debouncedFunction = _.debounce(originalFunction, 3000);

console.log('debouncedFunction() result: ', debouncedFunction());

console.log('originalFunction() result: ', originalFunction());

(codepen link)

And the result in the console is:

debouncedFunction() result:  undefined 

originalFunction() result:  some value

As you can see, the debounced function doesn't return anything. I understand that it's caused by an internal timer in the debounced function, but is there away around that?

Answer

pwolaq picture pwolaq · Jun 15, 2016

that's because debounced functions are called asynchronously - you can't return a value from them, although you can call another function passing the result:

var originalFunction = function() {
    console.log('some value');
    // or something like: callback(result)
};

var debouncedFunction = _.debounce(originalFunction, 3000);

console.log('debouncedFunction() result: ', debouncedFunction());