Nodes/ControlFlowUtils/⌛ Wait (Delay Execution)
ComfyUI Node

⌛ Wait (Delay Execution)

The Wait Node Just Sleeps the Whole Pipeline — and That's Fine

By VykosX·Created 2 years ago·Updated 2 years ago· 147
⌛ Wait (Delay Execution)
  • Input
  • Output
Delay5.00

The name tells you exactly what it does: Wait (⌛ Wait (Delay Execution), from the ControlFlowUtils pack) pauses execution for however many seconds you tell it, then passes your data along. No timer tricks, no polling, no API. The author is refreshingly honest about it - the node's own description calls the implementation "very naive," and it's right. Under the hood it's a single time.sleep(Delay) call. The whole Python process parks for that long, and then the workflow picks right back up.

So why would you ever want that? Mostly for timing, and for one surprisingly practical trick: pinning execution order.

What it's actually for

ComfyUI's lazy executor doesn't always run things in the order you'd draw them, especially when you have parallel branches feeding into a later stage. A Wait node with 0 seconds sitting in the middle of a branch forces ComfyUI to finish that branch before anything downstream of it runs. It's a cheap, dumb sequencing barrier. People also drop it in before a node that saves a file, gives a background process a moment to finish, or - the author's own example - clears memory between heavy stages.

You set one number and optionally pass data through:

  • Delay - length in seconds, as a float. 5 waits five seconds; 0.001 is one millisecond; 0 is "do nothing but force ordering." This is the only input a beginner ever touches.
  • Input → Output - any data you want forwarded once the sleep ends. Both are optional, so the node works fine as a bare pause.

The output is just whatever you put in, unchanged. Think of the Wait node as a gate, not a buffer.

The honest gotchas

Because it's a plain time.sleep, a long wait blocks the entire process. If you set 300 seconds, ComfyUI is genuinely asleep for five minutes - the browser tab will look hung, and a queue you thought you'd queued up isn't running while you wait. That's why the description steers you to Jovimetrix's JOV Delay if you need something cancellable, with a timer and a screensaver instead of a coma. For short, deliberate pauses - the 0-second ordering trick, a beat before a file write - Wait is perfectly adequate and dead simple.

Where people get burned: putting Wait between two independent branches when they meant to gate one branch on another's result. Wait can't express "wait until this thing happened"; it only waits a fixed amount. If you need actual dependency, wire the output of the first branch into the second. If you need a genuinely cancellable long delay, get JOV Delay. If you just need ComfyUI to hold still for a second and then carry on - this is your node.

Installing it

Wait ships inside VykosX/ControlFlowUtils, so you install the whole pack:

# ComfyUI Manager → Install Custom Nodes → search "ControlFlowUtils"
# or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/VykosX/ControlFlowUtils

Restart ComfyUI and you'll find Wait under the 🐺 VykosX-ControlFlowUtils menu. The pack has no Python dependencies at all - pure nodes plus a little frontend JS - so installation is about as painless as custom nodes get. It's also been sitting at v0.0.6 Alpha since late 2024, so it's stable, just not exactly in active development.

One last tip: if you ever find yourself stacking three Wait nodes at 0 seconds to fix ordering, that's a smell. It works, but the real fix for execution order problems is usually rewiring what depends on what. The Wait node is a great tool - just don't let it become your workflow's structural support.

Category🐺 VykosX-ControlFlowUtils

Inputs (2)

NameTypeDefaultDescription
DelayFLOAT5.00Length in seconds (or fractions of seconds) to wait for
Inputopt*Data to forward to other nodes after the waiting period is over

Outputs (1)

NameTypeDescription
Output*Data that will be forwarded to other nodes after the delay has been processed