# Overriding the Delay-Node default delay from a function

**URL:** <https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453>\
**Category:** General\
**Created:** [29 October 2023 23:44 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453 "2023-10-29T23:44:34Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![xytsrm](https://avatars.discourse-cdn.com/v4/letter/x/6de8d8/32.png) [@xytsrm](https://discourse.nodered.org/u/xytsrm)\
**Post date:** [29 October 2023 23:44 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/1 "2023-10-29T23:44:34Z")

</div>

Using a Delay-Node configured to override delay; I've tried this code in a Function-Node:

> var delayTime = 20000; // 20 seconds  
> var msgDelay = { payload: "START", timerDuration: delayTime, timerDurationUnit: "milliseconds" };  
> return msgDelay;

It fails to override the 5 second default. Is there a way to send a message to the Delay-Node from a function node that overrides the default 5 second delay, and simultaneously triggers the delay?

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [30 October 2023 00:01 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/2 "2023-10-30T00:01:11Z")

</div>

Have you tried sending `delay` rather than `timerDuration`.  
As stated in help text

> ### [Inputs](http://192.168.1.10:1880/#)
> 
> delay [number]  
> Sets the delay, in milliseconds, to be applied to the message. This option only applies if the node is configured to allow the message to override the configured default delay interval.

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [30 October 2023 00:02 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/3 "2023-10-30T00:02:12Z")

</div>

You need to set msg.delay. Or in your case msgDelay.delay, not msgDelay.timerDuration.

And the override time is always in milliseconds, timerDurationUnit has no impact.

---

<div class="post-metadata">

**Author:** ![xytsrm](https://avatars.discourse-cdn.com/v4/letter/x/6de8d8/32.png) [@xytsrm](https://discourse.nodered.org/u/xytsrm)\
**Post date:** [30 October 2023 00:06 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/4 "2023-10-30T00:06:01Z")

</div>

Will just setting msgDelay.delay = 20000 alone cause an override and trigger, or do I need to send a second message to trigger?

---

<div class="post-metadata">

**Author:** ![xytsrm](https://avatars.discourse-cdn.com/v4/letter/x/6de8d8/32.png) [@xytsrm](https://discourse.nodered.org/u/xytsrm)\
**Post date:** [30 October 2023 00:16 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/5 "2023-10-30T00:16:09Z")

</div>

Got it; this works:

> var delayTime = 20000; // 20 seconds  
> var msgDelay = { payload: "START", delay: delayTime};  
> return msgDelay;

X

---

<div class="post-metadata">

**Author:** ![jbudd](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jbudd](https://discourse.nodered.org/u/jbudd)\
**Post date:** [30 October 2023 00:32 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/6 "2023-10-30T00:32:00Z")

</div>

> [@xytsrm](#):
>
> Will just setting msgDelay.delay = 20000 alone cause an override and trigger

The arrival of any message at the delay node will start the timer, regardless of the value of msg.payload.  
After 20 seconds, the complete message object {payload:"START", delay: 20000} is passed on from the delay node

---

<div class="post-metadata">

**Author:** ![xytsrm](https://avatars.discourse-cdn.com/v4/letter/x/6de8d8/32.png) [@xytsrm](https://discourse.nodered.org/u/xytsrm)\
**Post date:** [30 October 2023 00:41 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/7 "2023-10-30T00:41:56Z")

</div>

You're correct; I removed the payload and it still works. I thought that should be the case, but every thing I tried failed. I just wasn't specifying the 'delay' property correctly; the documentation msg.delay is misleading.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [13 November 2023 00:42 UTC](https://discourse.nodered.org/t/overriding-the-delay-node-default-delay-from-a-function/82453/8 "2023-11-13T00:42:00Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
