我正在使用vuejs,当用户通过调用checkExistence()函数输入名称时,需要检查数据库中是否存在特定项目。

使用keyup事件,该函数被多次调用,导致数据库请求过多,因此,我尝试使用超时来缓和该函数,以便仅在用户停止键入至少2.5秒时才发送请求,但不会似乎没有用。 clearTimeout似乎不起作用,因为对每个keyup事件都发出了请求。这是代码:

<template>
    <v-list-item @keyup="checkExistence()"></v-list-item>
</template>
<script>
let timer = null;
export default {
methods: {
    checkExistence() {
         clearTimeout(timer);
         timer = setTimeout(async () => {
           //firebase request
         }, 2500);
    }
}
}
</script>

最佳答案

clearTimeout()方法清除使用setTimeout()方法设置的计时器。
setTimeout()返回的ID值用作clearTimeout()方法的参数。

关于javascript - clearTimeout不会清除超时变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59794939/

10-11 13:59