On the particle prefab, their is a thing called Autodestruct, which'll make it destroy itself once it does the full animation.And then put on One Shot, and it'll do it right.
Alternatively, you could do the yield WaitForSeconds (Check API).
Instantiating one-shot particle emitters that self-destruct is generally a bad idea, because its going to result in a lot of unnecessary drawcalls.
It's better to make your particle system a one-shot system that is set to not emit at all by default (or by setting .emit to false in Start()) and hiding it somewhere in the scene, and then positioning and rotating the emitter at the point of impact you want the effect to be, then calling the particleEmitter.Emit() function (which will make it emit once).