Other Time-related Functions

The following functions allow performing time-related operations. In particular, It is possible to interrupt the execution for a specific interval of time or for executing periodic callbacks.

sleep

The sleep method allows suspending the execution of a script for a specified interval of time. No callbacks will be executed during this time.

Syntax

It is possible to temporarily suspend the script execution thread. See the following syntax:

sleep(<delay>);

Parameters Usage

Parameter

Type

Default

Use

Annotation

delay

Integer

-

Mandatory

Interval of time (expressed in milliseconds) during which the script execution is suspended. Its value can be numeric (for example, 2000) or a string that represents a number (for example, “2000”).

Error Handling

Errors can occur in case:

For each of the cases above, the error is traced in the Script Editor (Error List expander).

Examples of Use

 

How to stop the script execution for 3 seconds by directly passing the value

sleep(3000);

 

How to stop the script execution for 5 seconds by passing a variable properly valued

var timeout = 5000;

sleep(timeout);

 

How to stop the script execution for 5 seconds by passing a variable valued with a string that represents a number

var timeout = “5000”;

sleep(timeout);

 

How to execute a script that includes a sleep instruction (sleep time = 60 seconds)

//Sleep for 60 seconds (in D-CC Scripting EM code)

sleep(60000);

 

How to execute a script that includes a subscription and a sleep instruction in the callback (sleep time = 60 seconds)

var result =

subscribeValues("System1.ManagementView:ManagementView.SystemSettings.OrganizationModes.DayNight",

"Value", onOrganizationModeChanged);

 

function onOrganizationModeChanged(object, values)

{

    console("New value = {0}", values.Value.Value);

    //Sleep for 60 seconds

    sleep(60000);

}

 

setTimeout

The setTimeout method allows scheduling the execution of a one-time callback after a specific interval of time (expressed in milliseconds).

Syntax

It is possible to delay the execution of a callback. See the following syntax:

setTimeout(<callback>, <delay>, <args>);

Parameters Usage

Parameter

Type

Default

Use

Annotation

callback

Function

-

-

Reference to the callback function that will be executed after the specified time delay.

JavaScript allows providing the name of the function or directly embedding the function definition.

delay

Integer

-

Mandatory

Time delay (in milliseconds) after which the callback will be invoked.

args

Object

-

Optional

List of parameters that will be passed to the callback method when it is executed.

Result

Error Handling

Errors can occur in case:

Examples of Use

How to execute a callback function after a specified delay (without arguments)

In the following code sample, the function delayedExecution is after 2 seconds while the instructions after the setTimeout are immediately executed.

function delayedExecution() {

console("I will be executed after some time");

}

 

setTimeout(delayedExecution, 2000);

console("I am executed immediately");

 

The output in the Console expander is : "I am executed immediately".

 

How to execute an inline callback after a specified delay (without arguments)

In the following code sample, the function is directly specified in the setTimeout invocation.

setTimeout(function() { console("Hello!") }, 2000);

 

The output in the Console expander after at least 2 seconds from the script start is: "Hello!".

 

How to execute a function after a specified delay (with args)

In the following code sample, a list of parameters is provided to the callback that will be invoked after the specified delay.

function delayWithParam(param1) {

    console("I was called with param: " + param1);

}

 

setTimeout(delayWithParam, 2000, "hello");

 

It is also possible to specify multiple parameters:

 

function delayWithParam(param1, param2) {

    console("I was called with params: {0} {1}", param1, param2);

}

 

setTimeout(delayWithParam, 2000, "hello", "world");

 

The output in the Console expander after at least 2 seconds from the script start is: "I was called with param: hello" (or "I was called with params: hello world"). Note that one or multiple parameters were passed to the callback function.

 

How to execute a delayed function while receiving a change of values from a subscription

In the following code sample, the callbacks are executed from the subscribeValues method while waiting for the delayed execution. If the value of the object changes, the callback changeValue is executed (this is not possible with the sleep method).

 

setTimeout(delayedExecution, 3000);

...

function delayedExecution() {

    console("delayed");

}

 

subscribeValues("System1.ApplicationView:ApplicationView.Logics.VirtualObjects.analog", "Value", changeValue);

...

function changeValue(object, values) {

    console("Change of value");

}

 

The output in the Console expander after at least 3 seconds from the script start is: "delayed" while, at each change of the property Value of the analog virtual object, the output is: "Change of value".

Note also that the callback of the delayed execution can be executed only after the specified delay (as the time when the subscription callback is called is unknown as well as how long the callback will take to complete its execution.)

 

clearTimeout

The clearTimeout method allows blocking a queued delayed execution before it starts.

Syntax

It is possible to prevent a timeout from triggering. See the following syntax:

clearTimeout(<timeoutObject>)

Parameters Usage

Parameter

Type

Default

Use

Annotation

timeoutObject

TimeoutObject

-

Mandatory

Value that is returned by the setTimeout method.

Error Handling

Errors can occur in case:

Examples of Use

 

How to block a delayed callback execution before its execution starts

The following code sample illustrates how the delayed execution is stopped using the clearTimeout method and passing the result of the setTimeout method invocation. The delayed method will not be executed.

 

function delayed() {

    console("you should not see me!");

}

 

var timeoutObject = setTimeout(delayed, 5000);

sleep(2000);

clearTimeout(timeoutObject);

console("I have stopped the timeout object");

 

The output in the Console expander after at least 2 seconds from the script start is: ""I have stopped the timeout object". No output in the Console expander after at least 5 seconds (the call of the clearTimeout cancels the delayed execution of the delayed() function).

setInterval

The setInterval method allows scheduling the repeated execution of a callback.

Syntax

It is possible to specify repeated executions of a callback. See the following syntax:

setInterval(<callback>, <interval>, <args>)

Parameters Usage

Parameter

Type

Default

Use

Annotation

callback

Function

-

-

Reference to the callback function that will be executed after the specified time delay.

JavaScript allows providing the name of the function or directly embedding the function definition.

interval

Integer

-

Mandatory

Interval of time (in milliseconds) between the repeated invocations.

args

Object

-

Optional

List of parameters that will be passed to the callback method when it is executed.

Result

Error Handling

Errors can occur in case:

Examples of Use

 

How to execute a callback repeatedly without parameters

function repeatMe() {

    console("I am repeating");

}

 

setInterval(repeatMe, 1000);

 

The output in the Console expander is : "I am repeating". The callbackrepeatMe is repeated each second during the script execution that can be stopped only manually.

clearInterval

The clearInterval method allows stopping the invocation of a repeated execution.

Syntax

It is possible to stop an interval from triggering. See the following syntax:

clearInterval(<intervalObject>)

Parameters Usage

Parameter

Type

Default

Use

Annotation

intervalObject

IntervalObject

-

Mandatory

Value that is returned by the setInterval method.

Error Handling

Errors can occur in case:

Examples of Use

How to execute a callback repeatedly and stop it after some iterations

In the following code sample, the execution of the callbackrepeatMe is repeated four times. Then the clearInteval method is called and the script ends.

 

var count = 1;

 

function repeatMe() {

    console("I am repeating: " + count);

    if (count == 4) {

        clearInterval(intervalObject);

    }

    count++;

}

 

var intervalObject = setInterval(repeatMe, 1000);

 

The output in the Console expander is : “I am repeating 1","I am repeating 2", "I am repeating 3", and "I am repeating 4". Note that the script automatically ends after the four-time execution.

 

var count = 1;

 

function repeatMe(num) {

    console("I am repeating: " + count);

    if (count == num) {

        clearInterval(intervalObject);

    }

    count++;

}

 

var intervalObject = setInterval(repeatMe, 1000, 5);

 

The above example is similar to previous but the execution limit is passed as parameter to the setInterval method.