[英]How can I run a debounced function from node command line?
我知道去抖的作用。 我想在節點中觸發它(通過使用#!/usr/bin/env node
運行腳本),但是遇到了麻煩。
以下代碼應 :
doThingAfterDelay()
在被調用一次並且在100ms內不再被調用之后運行一個簡單的函數。 doThingAfterDelay()
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()
返回真實值很重要。
如果您查看去抖動功能的源代碼,您會發現它在后台使用setTimeout
,因此具有相同的機制。 您可以在執行去抖動功能后使用回調或Promise傳遞值(同樣,如果您使用Promise,則可以使代碼與async / await看起來更加同步)。
var log = console.log.bind(console),
_ = require('lodash')
var delayedResults = new Promise(function(resolve) {
_.debounce(function(){
resolve('foo');
}, 100)();
});
var start = async function(){
log(await delayedResults )
}
start()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.