UIHANDLER OnUpdate

Invoked when drawing the user interface (many times per second).
 (self, elapsed)
== Payload ==
; self : - The updated widget.
; elapsed : - The time in seconds since the last OnUpdate dispatch, but excluding time when the user interface was not being drawn such as while zoning into the game world
== Details ==
* Preceeded by handlers associated with processing user input.
* Blocked by a frame or its parent.
* OnUpdate is resource intensive because it fires as often as the client can draw new frames -- potentially hundreds of FPS with modern computers.
** It is usually better to substitute or to skip frames, or to apply an for animating a widget.
** Alternatively, throttle slower parts of an OnUpdate handler by measuring the passage of time and only performing work as often as reasonably necessary.
== Examples ==
Throttles a workload no more than once every 0.05 seconds:
local frame = CreateFrame("FRAME")
local timeElapsed = 0
frame:HookScript("OnUpdate", function(self, elapsed)
	timeElapsed = timeElapsed + elapsed
	if timeElapsed > 0.05 then
		timeElapsed = 0
		-- do something
	end
end)
Executes a workload 20 times per second. If FPS is slower than 20, the workload repeats until caught up.
local frame = CreateFrame("FRAME")
local timeElapsed = 0
frame:HookScript("OnUpdate", function(self, elapsed)
	timeElapsed = timeElapsed + elapsed
	while (timeElapsed > 0.05) do
		timeElapsed = timeElapsed - 0.05
		-- do something
	end
end)