11 Replies Latest reply on Jan 21, 2009 11:35 PM by Kasyan Servetsky

    [CS3 JS] How to Create a Timer?

    ekimber
      Within InDesign I need to be able to fire a periodic process to examine links from a JavaScript script. I have my own script running in its own engine.

      I can't figure out how to create a timer that will run in the background and call the appropriate callback function periodically.

      I've created a little process like this:

      /**
      * Sleeps for waitTime milliseconds then calls the callBack function.
      */
      function timer(callBack, waitTime) {
      $.writeln("timer(): callBack=" + callBack + ", waitTime=" + waitTime);
      if (waitTime == undefined) waitTime = 2000;
      $.writeln("timer(): sleeping for " + waitTime + "...");
      $.sleep(waitTime);
      $.writeln("timer(): awake, calling callBack");
      try {
      return callBack();
      } catch (e) {
      $.writeln("timer(): Exception from callBack.exec(): " + e);
      }
      return undefined;
      }

      function myCallBack() {
      return Window.confirm("Callback called", true, "Continue looping");
      }

      while (true) {
      if (!timer(myCallBack)) break;
      }

      And this works in the sense that my timer runs, but it runs as a blocking process, which is not what I want.

      Is there something I'm missing or is this simply not possible in CS3 JavaScript? A search on "timer" in the InDesign forums didn't reveal anything, nor did the InDesign JavaScript Guide nor the Scripting Tools Guide.

      Thanks,

      Eliot