如何从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中的去抖动函数返回值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章