long setlnterval(function f, unsigned long interval, any args...)
Метод
setInterval
регистрирует функцию f, которая должна быть вызвана через interval миллисекунд и затем должна вызываться через каждые interval миллисекунд. Ключевое слово
this
внури функции f будет ссылаться на объект
Window
, а в аргументе args она получит все дополнительные аргументы, переданные методу
setlnterval.
Метод
setInterval
возвращает число, которое позднее может быть передано методу
Window.clearlnterval
для прекращения периодического вызова функции f.
По историческим причинам в аргументе f
можно передать не только функцию, но и строку с программным кодом на языке JavaScript. В этом случае каждые interval миллисекунд будет выполняться программный код, содержащийся в строке (как если бы он был заключен в тег
<script>
).
Если необходимо просто отложить выполнение программного кода и не требуется периодически запускать его, следует использовать метод
setTimeout.
long setTimeout(function f, unsigned long timeout, any args...)
Метод
setTimeout
напоминает метод
setInterval,
но вызывает указанную функцию только один раз: он регистрирует функцию f, которая должна быть вызвана через timeout миллисекунд и возвращает число, которое позднее можно передать методу
clearTimeout,
чтобы отменить вызов ожидающей функции. Когда истечет указанный интервал времени, функция f будет вызвана как метод объекта
Window
и ей будут переданы аргументы args. Если f - это строка с программным кодом, а не функция, она будет выполнена спустя timeout миллисекунд как сценарий в теге
<script>.
any showModalDialog(string url, [any arguments])
Создает новый объект
Windоw
, сохраняет значение arguments в свойстве
dialogArguments
этого объекта, загружает в окно документ с адресом url и блокирует выполнение сценария, пока окно не будет закрыто. После закрытия окна метод возвращает значение свойства
returnValue
окна. Обсуждение и порядок использования метода можно найти в разделе 14.5 и в примере 14.4.
Обработчики событий
Большинство событий, возникающих в HTML-элементах, всплывают вверх по дереву документа до объекта
Document
и затем до объекта
Window
. По этой причине в объекте
Window
можно использовать любые свойства обработчиков событий, которые перечислены в справочной статье
Element
. И дополнительно можно использовать свойства обработчиков событий, перечисленные ниже. По историческим причинам каждое из свойств обработчиков событий, перечисленных ниже, можно также определить (в виде HTML-атрибутов или JavaScript-свойств) в элементе
<body>
.
Worker
фоновый поток выполнения (EventTarget)
Объект
Worker
представляет фоновый поток выполнения. Создать новый объект
Worker
можнос помощью конструктора
Worker,
передав ему URL-адрес файла с программным кодом на языке JavaScript. Прогрaммный код в этом файле может использовать синхронные прикладные интерфейсы или выполнять продолжительные вычисления, не оказывая влияния на главный поток выполнения. Фоновые потоки работают в отдельном контексте выполнения (см.
WorkerGlobalScope
), и обмен данными с фоновым потоком выполнения возможен только через механизм асинхронных событий. Отправить данные фоновому потоку можно вызовом метода
postMessage,
а получить - с помощью обработчика события «message».
Введение в фоновые потоки выполнения приводится в разделе 22.4.
Конструктор
new Worker(string scriptURL)
Создает новый объект
Worker
и запускает JavaScript-сценарий, находящийся по адресу scriptURL.
Отправляет сообщение message фоновому потоку выполнения, котоpый получит его в виде объекта
MessageEvent
, в обработчике
onmessage
. Аргумент message может быть простым значением, объектом или массивом, но не функцией. Допускается передавать такие объекты клиентского JavaScript, как
ArrayBuffer, File, Blob и ImageData,
но узлы, такие как
Document
и
Element
, передавать нельзя (подробности приводятся во врезке «Структурированные копии» в главе 22).
Необязательный аргумент ports позволяет указать один или более прямых каналов связи с объектом
Worker
. Например, если имеются два объекта
Worker
, можно обеспечить прямое взаимодействие между ними, передав их конструкторам концы соединения
MessageChannel
.
void terminate
Останавливает фоновый поток выполнения и прерывает работу сценария в нем.
Обработчики событий
Поскольку фоновые потоки выполняются в окружении, отличном от окружения, создавшего их, они могут взаимодействовать с родительским потоком только посредством событий. Обработчики этих событий можно зарегистрировать с помощью свойств, перечисленных ниже, или с помощью методов интерфейса
EventTarget
.
onerror
Когда в сценарии, выполняемом в фоновом потоке, возбуждается исключение и это исключение не обрабатывается обработчиком
onerror
объекта
WorkerGlobalScope
, генерируется событие «error» в объекте
Worker
. Обработчику этого события передается объект
ErrorEvent
. Событие «error» не всплывает. Если данный фоновый поток выполнения запущен другим фоновым потоком, отмена события «error» предотвратит его передачу родительскому фоновому потоку. Если объект
Worker
создан в главном потоке выполнения, отмена события может предотвратить вывод сообщения в консоли JavaScript.
onmessage
Когда сценарий, выполняемый в фоновом потоке, вызовет свою глобальную функцию
postMessage
(см. WorkerGlobalScope), в объекте
Worker
будет сгенерировано событие «message». Обработчику события будет передан объект
MessageEvent
, свойство
data
которого будет содержать копию значения, переданного сценарием из фонового потока выполнения методу
postMessage
.
WorkerGlobalScope
(EventTarget, Global)
Фоновый поток, представляющий объект
Worker
, работает в среде выполнения, совершенно отличной от родительского потока, породившего его. Объект
WorkerGlobalScope
является глобальным объектом для фонового потока выполнения, поэтому получается, что данная справочная статья описывает среду выполнения «внутри» объекта
Worker
. Поскольку объект
WorkerGlobalScope
играет роль глобального объекта, он наследует свойства и методы глобального объекта базового языка JavaScript.