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