Lua does have them, but the lua variant used in eso is stripped of coroutines.
Votan created a lib (LibAsync), which can be used instead. With the lib you can create a sequence of commands which are then spread over multiple frames via the game's OnUpdate event.
You can find the lib in his minimap addon. I haven't used the lib myself so the following example might be wrong. From looking at the lib's code I think it is used like this:
Let's say you want to replace the following:
Lua Code:
for i = startValue, endValue do
something with value i
end
then you can instead do
Lua Code:
local async = LibStub("LibAsync")
local someFunction = function( i )
something with value i
end
--variant A
local task = async:Create("yourTaskName")
task:For(startValue, endValue):Do(someFunction)
-- OR variant B
async:For(startValue, endValue):Do(someFunction)
Variant A has the benefit that you can pause or interrupt the task via task:Suspend() or task:Cancel()