Start a knockback cooldown timer inside your function. Add a condition to the function itself to not run if the timer is running. The timer duration can be as low as a single frame.
Thanks for the response, and sorry for the late reply. I'm assuming you mean using a cooldown variable and lowering it every tick if it's over 0 and raising it in the function actions. If so, I already tried that too.
I think that these solutions involving checking veriables in conditions and editing them in actions aren't working because the function is being called multiple times at the exact same time, so there isn't really an order of the calls to stop every call after the first because there is no first. But that's just my hunch, I still don't really know what the issue is exactly or how to fix it.