Here’s some info about why you shouldn’t use spawn:
Please do not use
spawn
. It’s a hold-over from Roblox’s 30hz pipeline and has no guarantees about when (or if) it will begin executing the new thread.spawn
is especially evil because it seems innocent at first, but once you have a lot of code that all usesspawn
, you can see significant delays in execution upwards of several seconds in a resource-intensive game. Roblox throttles execution of threads and if the device is too bogged down, your thread could just get deferred forever.
This is bad advice. It’s easy to answer when you should use spawn: never. There is never a situation where you want to run some code “maybe at some point in the future or never”. Even for things that seem inconsequential, you can end up shooting yourself in the foot if things run in an order that you don’t expect them to.
Don’t set yourself up for failure. Use
coroutine.wrap
if you need to begin a new thread. Never usespawn
,delay
, orwait()
in your code.
There’s a full post here: Coroutines V.S. Spawn()... Which one should I use? - #8 by evaera