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

我有这样的代码:

var originalFunction = function() { return 'some value'; }; var debouncedFunction = _.debounce(originalFunction, 3000); console.log('debouncedFunction() result: ', debouncedFunction()); console.log('originalFunction() result: ', originalFunction()); 

(codepen链接)

控制台的结果是:

 debouncedFunction() result: undefined originalFunction() result: some value 

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

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

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

在引擎盖下_.debounce使用setTimout ,你需要一个回调来从async函数返回值。

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

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