You can start a defer loop yourself, or provide a function for the GUI to run on every update, and then have that function do the polling and update the GUI when there's a change.
Code:
local lastJsfxValue
local function watchJsfx()
local jsfxValue = howeverYouGetTheValue()
if jsfxValue ~= lastJsfxValue then
updateStuffWith(jsfxValue)
lastJsfxValue = jsfxValue
end
end
GUI.func = watchJsfx
-- GUI.func will run on every loop
-- Use this to set the poll time in seconds:
GUI.freq = 1.5