如何反弹使用异步/等待?
问题描述:
我有一个输入框。用户停止输入后,我想执行HTTP请求并等待结果。如何反弹使用异步/等待?
由于网络请求不允许在jsbin,我用setTimeout()
代替。
var log = console.log.bind(console)
var delayedResults = new Promise(function(resolve) {
setTimeout(function(){
resolve('Wooo I am the result!')
}, 3000);
});
document.querySelector('input').addEventListener('input', _.debounce(async function(){
log('Doing search')
var result = await delayedResults
log('Result is', result)
}), 500);
然而,当我在框中键入“做搜索”立即出现的每一个字符 - 我希望它只是出现在500毫秒后已过期。
如何使用去抖动并等待?
答
的问题是,在最后一行:
}), 500);
指定时间争吵后应先关闭debounce
函数调用:
}, 500));
var log = console.log.bind(console)
var delayedResults = new Promise(function(resolve) {
setTimeout(function(){
resolve('Wooo I am the result!')
}, 3000);
});
document.querySelector('input').addEventListener('keydown', _.debounce(async function(){
log('Doing search')
var result = await delayedResults;
log('Result is', result)
}, 500));
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>
<input>
哦微妙!我认为它通过了linting,所以我没有注意到。谢谢! – mikemaccana