Class Timers

java.lang.Object
org.mozilla.javascript.tools.shell.Timers

public class Timers extends Object
This class supports the "setTimeout" and "clearTimeout" methods of semi-standard JavaScript. It does it within a single thread by keeping track of a queue of timeout objects, and then it blocks the thread. It's used solely within the Shell right now.
  • Field Details

  • Constructor Details

    • Timers

      public Timers()
  • Method Details

    • install

      public void install(Scriptable scope)
      Initialize the "setTimeout" and "clearTimeout" functions on the specified scope.
      Parameters:
      scope - the scope where the functions should be defined
    • runAllTimers

      public void runAllTimers(Context cx, Scriptable scope) throws InterruptedException
      Execute all pending timers and microtasks, blocking the thread if we need to wait for any timers to time out.
      Parameters:
      cx - The Context to use to execute microtasks and timer functions
      scope - the global scope
      Throws:
      InterruptedException - if the thread is interrupted while sleeping
    • executeNext

      private boolean executeNext(Context cx, Scriptable scope) throws InterruptedException
      Put up to one task on the context's "microtask queue." If the next task is not ready to run for some time, then block the calling thread until the time is up.
      Parameters:
      cx - the context
      scope - the current scope
      Returns:
      true if something was placed on the queue, and false if the queue is empty
      Throws:
      InterruptedException - if the thread was interrupted
    • setTimeout

      private Object setTimeout(Object[] args)
    • clearTimeout

      private Object clearTimeout(Object[] args)