I have a form with username input and I am trying to verify if the username is in use or not in a debounce function. The issue I'm having is that my debounce doesn't seem to be working as when I type "user" my console looks like
u
us
use
user
Here is my debounce function
export function debounce(func, wait, immediate) {
    var timeout;
    return () => {
        var context = this, args = arguments;
        var later = () => {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
};
And here is how I'm calling it in my React component
import React, { useEffect } from 'react' 
// verify username
useEffect(() => {
    if(state.username !== "") {
        verify();
    }
}, [state.username])
const verify = debounce(() => {
    console.log(state.username)
}, 1000);
The debounce function seems to be correct? Is there a problem with how I am calling it in react?
 
     
     
     
     
     
    