如何在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/