loop a function based on a time variable?

so yeah, is it possible to loop a function or custom event based on an amount of time?
eg.
hold fire button > goes to function > performs things like update ammo, calculate shot distances, play animation > waits 1 second of gameplay (fire button is still held) > plays function again.

and repeat like this till fire button is released.
the only bit i don’t know how to get is this bit > waits 1 second of gameplay (fire button is still held)