Class Timers
java.lang.Object
org.htmlunit.corejs.javascript.tools.shell.Timers
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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
An object to go on the priority queue. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
private final PriorityQueue
<Timers.Timeout> private final HashMap
<Integer, Timers.Timeout> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate Object
clearTimeout
(Object[] args) private boolean
executeNext
(Context cx, Scriptable scope) 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.void
install
(Scriptable scope) Initialize the "setTimeout" and "clearTimeout" functions on the specified scope.void
runAllTimers
(Context cx, Scriptable scope) Execute all pending timers and microtasks, blocking the thread if we need to wait for any timers to time out.private Object
setTimeout
(Object[] args)
-
Field Details
-
lastId
private int lastId -
timers
-
timerQueue
-
-
Constructor Details
-
Timers
public Timers()
-
-
Method Details
-
install
Initialize the "setTimeout" and "clearTimeout" functions on the specified scope.- Parameters:
scope
- the scope where the functions should be defined
-
runAllTimers
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 functionsscope
- the global scope- Throws:
InterruptedException
- if the thread is interrupted while sleeping
-
executeNext
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 contextscope
- 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
-
clearTimeout
-