# Is there a system-util-invokelater for Perspective?

**URL:** <https://forum.inductiveautomation.com/t/is-there-a-system-util-invokelater-for-perspective/114601>\
**Category:** Ignition\
**Tags:** perspective, scripting\
**Created:** [March 20, 2026, 7:07pm UTC](https://forum.inductiveautomation.com/t/is-there-a-system-util-invokelater-for-perspective/114601 "2026-03-20T19:07:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![drewdin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/drewdin/32/3363_2.png) [@drewdin](https://forum.inductiveautomation.com/u/drewdin)\
**Post date:** [March 20, 2026, 7:07pm UTC](https://forum.inductiveautomation.com/t/is-there-a-system-util-invokelater-for-perspective/114601/1 "2026-03-20T19:07:58Z")

</div>

I have the same question as this topic below, is this still the recommended way for 8.1.52?

Create an expression of NOW(1000) with a corresponding script transform? Thanks!

[https://forum.inductiveautomation.com/t/alternative-to-system-util-invokelater-in-perspective-script/40778](https://alternative-to-system-util-invokelater-in-perspective-script)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [March 20, 2026, 7:19pm UTC](https://forum.inductiveautomation.com/t/is-there-a-system-util-invokelater-for-perspective/114601/2 "2026-03-20T19:19:54Z")

</div>

My [later.py](https://www.automation-pros.com/ignition/later.py) script has a gateway-scope substitute for `invokeLater`.

It is efficient, but does not carry perspective scope details into the thread environment. It is also gateway-wide, not specific to one client.

---

<div class="post-metadata">

**Author:** ![drewdin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/drewdin/32/3363_2.png) [@drewdin](https://forum.inductiveautomation.com/u/drewdin)\
**Post date:** [March 20, 2026, 7:24pm UTC](https://forum.inductiveautomation.com/t/is-there-a-system-util-invokelater-for-perspective/114601/3 "2026-03-20T19:24:48Z")

</div>

Thanks, I’ll check it out

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [March 20, 2026, 7:29pm UTC](https://forum.inductiveautomation.com/t/is-there-a-system-util-invokelater-for-perspective/114601/4 "2026-03-20T19:29:29Z")

</div>

If it will be used heavily, and for making delays without sleep, consider making a scheduled thread pool executor with a larger pool. Same technique as shown in `later.py`.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [March 20, 2026, 7:36pm UTC](https://forum.inductiveautomation.com/t/is-there-a-system-util-invokelater-for-perspective/114601/5 "2026-03-20T19:36:13Z")

</div>

Periscope has a `system.perspective.invokeOnQueue` function that supports a `delay` parameter:

> [@Musson Industrial's Embr-Periscope Module](https://forum.inductiveautomation.com/t/musson-industrials-embr-periscope-module/99047/82):
>
> Release Notice [Embr v8.1 - 2026.3.3](https://github.com/mussonindustrial/embr/releases/tag/releases%2F8.1%2F2026.3.3)[Embr v8.3 - 2026.3.3](https://github.com/mussonindustrial/embr/releases/tag/releases%2F8.3%2F2026.3.3) This release includes a scripting function for submitting functions to a Perspective session's queue: system.perspective.invokeOnQueue(function, [delay], [scope], [sessionId], [pageId]) Parameters function (required) A function that will be called with a single parameter: The parameter is the requested scope. This allows access to the view, page, or session if it cannot be captured via a closure. delay (optional) Time in milli…

This is really only intended for scheduling property writes. If you do any work that severely blocks the queue you're going to have a bad time.
