This was a scenario that one of the Gunnery Sgts asked us during martial arts training. There's a guy popping off rounds at people while you're on leave. You're not close enough to hit him without running at him. What do you do?
Most of us said take cover and wait until he reloads to take him to the ground. A few other said take cover and wait until he reloads before drawing their own weapon and firing when there aren't any incoming rounds. We all pretty much had the agreement that acting when there are rounds coming at you isn't smart, and to wait until an advantage comes up, like them stopping to reload.
Not everyone has martial arts training or a concealed weapon, but knowing when to act and then following through seems to make a huge difference in stopping or delaying an attacker enough for someone else to stop them.