如何从javascript中的去抖动函数返回值? [复制]

Posted

技术标签:

【中文标题】如何从javascript中的去抖动函数返回值? [复制]【英文标题】:How to return value from debounced function in javascript? [duplicate] 【发布时间】:2016-10-16 15:22:54 【问题描述】:

我有这样的代码:

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

如您所见,去抖函数不返回任何内容。我知道这是由 debounced 函数中的内部计时器引起的,但有没有解决这个问题?

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

_.debounce 的底层使用 setTimout,您需要一个回调来从 async 函数返回值。

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

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

【讨论】:

以上是关于如何从javascript中的去抖动函数返回值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何从javascript中的函数返回值[重复]

jQuery中的去抖动功能

React 中的去抖动和超时

Angular6 ngModelChange 中的去抖动时间

从Javascript中的嵌套函数返回值[重复]

从Javascript中的嵌套函数返回值[重复]