How To Call It
Workflow is a global table: call its functions with a dot (Workflow.<method>(...)), not a colon. Requires Macro Handler 1.0.51 or later.
Runs an action a specified number of times, breaking early when it returns false.
Documented for app version 1.0.50Updated:
Workflow is a global table: call its functions with a dot (Workflow.<method>(...)), not a colon. Requires Macro Handler 1.0.51 or later.
Runs an action a specified number of times, breaking early when it returns false.
count is an integer from 0 to 1000000; action(index) is 1-based. Options: intervalMs (default 10) and timeoutMs. False gives reason="break", nil continues; normal completion gives reason="completed". The result has ok, reason, attempts, elapsedMs, value, values and error; values.n preserves the number of multiple returns, including nil. The default timeout is 30000 ms, with a maximum of 86400000 ms and up to 1000000 iterations. Calls are synchronous and cooperative; a blocking operation must still use its own timeout.
Combine API calls, conditions and reusable Module functions. Stop, pause and execution budgets remain active. Retry actions must be safe to repeat; do not automatically repeat side effects such as payments or taps after an ambiguous network response.
The snippet below is a starter pattern that can be applied directly in runtime flow.
local result = Workflow.times(5, function(index)
print(index)
if index == 3 then return false end
end, {intervalMs = 50, timeoutMs = 2000})
print(result.reason, result.attempts)From foundation to combined usage, each level is provided as a separate code block so you can copy the level you need and adapt it directly.
local result = Workflow.times(5, function(index)
print(index)
if index == 3 then return false end
end, {intervalMs = 50, timeoutMs = 2000})
print(result.reason, result.attempts)local stepOk = true
local result = Workflow.times(5, function(index)
print(index)
if index == 3 then return false end
end, {intervalMs = 50, timeoutMs = 2000})
print(result.reason, result.attempts)
if stepOk then
wait(200)
endlocal ok, err = pcall(function()
local result = Workflow.times(5, function(index)
print(index)
if index == 3 then return false end
end, {intervalMs = 50, timeoutMs = 2000})
print(result.reason, result.attempts)
end)
if not ok then
print("API step failed: Workflow.times: " .. tostring(err))
requestStop()
end-- Workflow.times(count, action, options?)
local function run_times_step()
local result = Workflow.times(5, function(index)
print(index)
if index == 3 then return false end
end, {intervalMs = 50, timeoutMs = 2000})
print(result.reason, result.attempts)
end
local ok, err = pcall(run_times_step)
if not ok then
toast("Step failed")
print(err)
endlocal result = Workflow.times(5, function(index)
print(index)
if index == 3 then return false end
end, {intervalMs = 50, timeoutMs = 2000})
print(result.reason, result.attempts)