在antd表单的自定义校验中,做到用户输入的时候就调用接口检测数据库里是否有重复的值
所以使用debounce函数来实现
// 防抖
export const debounce = (() => {
let timer = null
return (callback, wait = 800) => {
timer && clearTimeout(timer)
timer = setTimeout(callback, wait)
}
})()
const handleCheckUsername = async (username) => {
try {
const res = await checkUsername({ username })
if (res.success) {
return Promise.resolve()
}
return Promise.reject(new Error(res.message))
} catch (error) {}
}
但是这样就debounce的返回值是undefined,没办法讲错误反馈到antd的表单下面 类似这种
执行结果无法返回settimeout本身是异步的