mik*_*ana 8 javascript async-await lodash debounce
我有一个输入框.用户停止输入后,我想执行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);
Run Code Online (Sandbox Code Playgroud)
但是,当我在框中输入时,"正在搜索"会立即显示每个字符 - 我希望它仅在500毫秒到期后出现.
我怎样才能使用去抖并等待?
问题出在最后一行:
}), 500);
Run Code Online (Sandbox Code Playgroud)
您应该debounce在指定时间参数后关闭函数调用:
}, 500));
Run Code Online (Sandbox Code Playgroud)
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));Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>
<input>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8388 次 |
| 最近记录: |