Литмир - Электронная Библиотека
A
A

Метод

<b>setInterval()</b>
возвращает число, которое позднее может быть передано методу
<b>Window.clearlnterval()</b>
для прекращения периодического вызова функции f.

По историческим причинам в аргументе f можно передать не только функцию, но и строку с программным кодом на языке JavaScript. В этом случае каждые interval миллисекунд будет выполняться программный код, содержащийся в строке (как если бы он был заключен в тег

<b>&lt;script&gt;</b>
).

Если необходимо просто отложить выполнение программного кода и не требуется периодически запускать его, следует использовать метод

<b>setTimeout().</b>

<b>long setTimeout(function f, unsigned long timeout, any args...)</b>

Метод

<b>setTimeout()</b>
напоминает метод
<b>setInterval(),</b>
но вызывает указанную функцию только один раз: он регистрирует функцию f, которая должна быть вызвана через timeout миллисекунд и возвращает число, которое позднее можно передать методу
<b>clearTimeout(),</b>
чтобы отменить вызов ожидающей функции. Когда истечет указанный интервал времени, функция f будет вызвана как метод объекта
<b>Window</b>
и ей будут переданы аргументы args. Если f - это строка с программным кодом, а не функция, она будет выполнена спустя timeout миллисекунд как сценарий в теге
<b>&lt;script&gt;.</b>

<b>any showModalDialog(string url, [any arguments])</b>

Создает новый объект

<b>Windоw</b>
, сохраняет значение arguments в свойстве
<b>dialogArguments</b>
этого объекта, загружает в окно документ с адресом url и блокирует выполнение сценария, пока окно не будет закрыто. После закрытия окна метод возвращает значение свойства
returnValue
окна. Обсуждение и порядок использования метода можно найти в разделе 14.5 и в примере 14.4.

Обработчики событий

Большинство событий, возникающих в HTML-элементах, всплывают вверх по дереву документа до объекта

<b>Document</b>
и затем до объекта
<b>Window</b>
. По этой причине в объекте
<b>Window</b>
можно использовать любые свойства обработчиков событий, которые перечислены в справочной статье
<b>Element</b>
. И дополнительно можно использовать свойства обработчиков событий, перечисленные ниже. По историческим причинам каждое из свойств обработчиков событий, перечисленных ниже, можно также определить (в виде HTML-атрибутов или JavaScript-свойств) в элементе
<b>&lt;body&gt;</b>
.

JavaScript. Подробное руководство, 6-е издание - i_100.jpg

JavaScript. Подробное руководство, 6-е издание - i_101.jpg

JavaScript. Подробное руководство, 6-е издание - i_102.jpg

Worker

фоновый поток выполнения (EventTarget)

Объект

<b>Worker</b>
представляет фоновый поток выполнения. Создать новый объект
<b>Worker</b>
можнос помощью конструктора
<b>Worker(),</b>
передав ему URL-адрес файла с программным кодом на языке JavaScript. Прогрaммный код в этом файле может использовать синхронные прикладные интерфейсы или выполнять продолжительные вычисления, не оказывая влияния на главный поток выполнения. Фоновые потоки работают в отдельном контексте выполнения (см.
<b>WorkerGlobalScope</b>
), и обмен данными с фоновым потоком выполнения возможен только через механизм асинхронных событий. Отправить данные фоновому потоку можно вызовом метода
<b>postMessage(),</b>
а получить - с помощью обработчика события «message».

Введение в фоновые потоки выполнения приводится в разделе 22.4.

Конструктор

<b>new Worker(string scriptURL)</b>

Создает новый объект

<b>Worker</b>
и запускает JavaScript-сценарий, находящийся по адресу scriptURL.

Методы

<b>void postMessage(any message, [MessagePort[] ports])</b>

Отправляет сообщение message фоновому потоку выполнения, котоpый получит его в виде объекта

<b>MessageEvent</b>
, в обработчике
<b>onmessage</b>
. Аргумент message может быть простым значением, объектом или массивом, но не функцией. Допускается передавать такие объекты клиентского JavaScript, как
<b>ArrayBuffer, File, Blob и ImageData,</b>
но узлы, такие как
<b>Document</b>
и
<b>Element</b>
, передавать нельзя (подробности приводятся во врезке «Структурированные копии» в главе 22).

Необязательный аргумент ports позволяет указать один или более прямых каналов связи с объектом

<b>Worker</b>
. Например, если имеются два объекта
<b>Worker</b>
, можно обеспечить прямое взаимодействие между ними, передав их конструкторам концы соединения
<b>MessageChannel</b>
.

<b>void terminate()</b>

Останавливает фоновый поток выполнения и прерывает работу сценария в нем.

Обработчики событий

Поскольку фоновые потоки выполняются в окружении, отличном от окружения, создавшего их, они могут взаимодействовать с родительским потоком только посредством событий. Обработчики этих событий можно зарегистрировать с помощью свойств, перечисленных ниже, или с помощью методов интерфейса

<b>EventTarget</b>
.

<b>onerror</b>

Когда в сценарии, выполняемом в фоновом потоке, возбуждается исключение и это исключение не обрабатывается обработчиком

<b>onerror</b>
объекта
<b>WorkerGlobalScope</b>
, генерируется событие «error» в объекте
<b>Worker</b>
. Обработчику этого события передается объект
<b>ErrorEvent</b>
. Событие «error» не всплывает. Если данный фоновый поток выполнения запущен другим фоновым потоком, отмена события «error» предотвратит его передачу родительскому фоновому потоку. Если объект
<b>Worker</b>
создан в главном потоке выполнения, отмена события может предотвратить вывод сообщения в консоли JavaScript.

530
{"b":"942716","o":1}