我知道去抖动是做什么的。我想在节点中触发它(通过运行带有 的脚本#!/usr/bin/env node
),但我遇到了麻烦。
下面的代码应该:
- Make
doThingAfterDelay()
在它被调用一次并且在 100 毫秒内没有被再次调用后运行一个简单的函数。 - 跑
doThingAfterDelay()
- 休眠(异步)15 秒,给
doThingAfterDelay()
时间去抖动并因此执行。
但是它不起作用:
var log = console.log.bind(console),
_ = require('lodash')
var doThingAfterDelay = _.debounce(function(){
return 'foo'
}, 100);
log(doThingAfterDelay());
setTimeout(function(){
log('Sleeping')
}, 15 * 1000)
它返回:
undefined
Sleeping
我期望:
foo
Sleeping
如何使去抖动功能运行?
编辑:我可以通过以下方式获得所需的输出:
var log = console.log.bind(console),
_ = require('lodash')
var doThingAfterDelay= _.debounce(function(){
log('foo')
}, 100);
doThingAfterDelay('one', 'two');
setTimeout(function(){
log('Sleeping')
}, 15 * 1000)
但我不明白为什么 -doThingAfterDelay()
返回一个真正的价值很重要。