Skip to main content

delay

Delay messages or limit the rate at which they pass through.

Overview

The delay node delays messages or limits message rate. Essential for rate limiting API calls, debouncing sensor readings, implementing timeouts, and controlling message flow to prevent overwhelming downstream systems.

Fixed
Delay
Random
Delay
Rate
Limiting
Queue
Management

Properties

Property Type Default Description
pauseType string "delay" delay, delayv, random, rate, queue, timed
timeout number 5 Delay time value
timeoutUnits string "seconds" milliseconds, seconds, minutes, hours, days
rate number 1 Messages per time unit (rate mode)
drop boolean false Drop intermediate messages

Delay Modes

Fixed Delay

Delay each message by a fixed amount

Input:  msg1 ─┬─ msg2 ─┬─ msg3
              │        │
Output: ──────msg1────msg2────msg3
        (5s delay for each)

Random Delay

Delay by random time within range

// Between 1-5 seconds
Input:  msg1 ─┬─ msg2 ─┬─ msg3
Output: ──msg1────────msg2──msg3
        (varies each time)

Rate Limit

Limit to X messages per time period

// 1 message per second
Input:  msg1,msg2,msg3,msg4 (burst)
Output: msg1──msg2──msg3──msg4
        (evenly spaced)

Rate Limit (Drop)

Drop excess messages beyond rate

// 1 msg/sec, drop excess
Input:  msg1,msg2,msg3,msg4 (burst)
Output: msg1──────────────msg4
        (only latest kept)

Example: API Rate Limiting

Limit API calls to 10 per minute to avoid throttling.

// Delay node configuration
{
  "pauseType": "rate",
  "rate": 10,
  "rateUnits": "minute",
  "drop": false
}

// Flow: sensor readings → delay (rate limit) → HTTP API
// Ensures max 10 calls per minute regardless of sensor frequency

Example: Button Debounce

Debounce button presses to ignore rapid repeated clicks.

// Delay node configuration (drop mode)
{
  "pauseType": "rate",
  "rate": 1,
  "rateUnits": "second",
  "drop": true  // Drop intermediate messages
}

// User presses button rapidly: click click click click
// Output: Only first click passes
// Next click allowed after 1 second

Example: Dynamic Delay

Set delay time dynamically based on message properties.

// Delay node configuration
{
  "pauseType": "delayv",
  "timeoutUnits": "seconds"
}

// Function node before delay:
msg.delay = msg.payload.priority === "low" ? 10000 : 1000; // ms
return msg;

// Low priority: 10 second delay
// High priority: 1 second delay

Control Messages

Flush Queue

Release all queued messages immediately

msg.flush = true;
// or
msg.payload = "flush";

Reset/Clear

Clear all queued messages

msg.reset = true;
// Clears queue without sending

Push to Front

Add message to front of queue (priority)

msg.toFront = true;
// Message goes to front of queue

Get Queue Length

Check how many messages are queued

// Status shows: "X queued"
// Use inject to trigger status check

Common Use Cases

API Throttling

Respect API rate limits (e.g., 100 req/min)

Sensor Debounce

Ignore rapid sensor fluctuations

Retry Delays

Wait before retrying failed operations

Animation Timing

Sequence LED patterns or displays

Related Nodes