求个节流,我这个没反应,不会节流

求个节流,我这个没反应,不会节流


const onSubmit = async () => {
    let timer = null;
    if (timer) {
        ElMessage({ message: '点太快了', type: 'warning' })
        return clearTimeout(timer)
    }

    timer = await setTimeout(async () => {
        const data = await axios.post('/adminapi/user/useredit', { username, form }).then(res => { return res.data })
        if (data.status == 1) {
            //成功
            ElMessage({
                message: data.message,
                type: 'success',
                duration: 1000
            })
        } else {
            ElMessage({
                message: data.message,
                type: 'error',
                duration: 1000
            })
        }
    }, 1000)
}

你可以这样改改,只生效最后一次点击


let timer = null;  // 全局变量
const onSubmit = async () => {
    
clearTimeout(timer);  //每次点击都清除定时器,清除后timer不会变回null而是一个数字
    if (timer) {
        ElMessage({ message: '点太快了', type: 'warning' })
       
    }
 
    timer = await setTimeout(async () => {
        const data = await axios.post('/adminapi/user/useredit', { username, form }).then(res => { return res.data })
        if (data.status == 1) {
            //成功
            ElMessage({
                message: data.message,
                type: 'success',
                duration: 1000
            })
        } else {
            ElMessage({
                message: data.message,
                type: 'error',
                duration: 1000
            })
        }
        timer = null;    // timer置为null  
  }, 1000)
}