我有一个输入框。用户停止输入后,我想执行 HTTP 请求并等待结果。
这是一个jsbin
由于 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
函数调用after指定时间参数:
}, 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)