如何在javascript中从debounced函数返回值?

时间:2016-06-15 13:19:12

标签: javascript jquery underscore.js throttling debouncing

我有这样的代码:

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

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

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

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

(codepen link)

控制台中的结果是:

debouncedFunction() result:  undefined 

originalFunction() result:  some value

正如您所看到的,去抖动功能不会返回任何内容。据我所知,它是由去抖动功能中的内部定时器引起的,但它是否存在呢?

2 个答案:

答案 0 :(得分:6)

因为去抖动的函数是异步调用的 - 你不能从它们返回一个值,尽管你可以调用另一个传递结果的函数:

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

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

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

答案 1 :(得分:0)

引擎_.debounce使用setTimout,您需要回调才能从async函数返回值。

function originalFunction (callback) {
     callback("some value");
}

这是一个很好的链接, https://john-dugan.com/javascript-debounce/