【发布时间】:2017-11-13 19:43:13
【问题描述】:
我知道debounce 做了什么。我想在节点中触发它(通过使用#!/usr/bin/env node 运行脚本),但我遇到了麻烦。
下面的代码应该:
- 使
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() 返回一个实际值很重要。
【问题讨论】: