Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

if (typeof e.data === "string") {

console.log("Worker: " + e.data):

return:

}

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

postMessage
.

*******************************************

Пример 22.8. Выполнение синхронных HTTP-запросов в фоновом потоке

// Этот файл будет загружен вызовом конструктора Worker, поэтому он будет выполняться

// в независимом потоке выполнения и может безопасно использовать синхронный прикладной

// интерфейс объекта XMLHttpRequest. В качестве сообщения фоновому потоку должен

// передаваться массив URL-адресов. Поток синхронно извлечет содержимое

// из указанных адресов и вернет его в виде массива строк,

onmessage = function(e) {

var urls = e.data; // Входные данные: URL-адреса извлекаемого содержимого

var contents = []; // Выходные данные: содержимое указанных URL-адресов

for(var і = 0: і < urls.length; i++) {

var url = urls[i]; // Для каждого URL-адреса

var xhr = new XMLHttpRequest; // Создать HTTP-запрос

xhr.open("GET'', url, false); // false обеспечит синхронное выполн.

xhr.send; // Блокируется до выполнения запроса

if (xhr.status !== 200) // Возбудить исключение при неудаче

throw Error(xhr.status + " " + xhr.statusText + ": + url);

contents.push(xhr.responseText); // Иначе сохранить содержимое

}

// Отослать массив содержимого URL-адресов обратно основному потоку

postMessage(contents);

}

22.5. Типизированные массивы и буферы

Как говорилось в главе 7, массивы в языке JavaScript являются многоцелевыми объектами с числовыми именами свойств и специальным свойством

length
. Элементами массива могут быть любые JavaScript-значения. Массивы могут увеличиваться и уменьшаться в размерах и быть разреженными. Реализации JavaScript выполняют множество оптимизаций, благодаря которым типичные операции с массивами в языке JavaScript выполняются очень быстро. Типизированные массивы - это объекты, подобные массивам (раздел 7.11), которые имеют несколько важных отличий от обычных массивов:

• Все элементы типизированного массива являются числами. Конструктор, используемый для создания массива, определяет тип (целые числа со знаком или без знака или вещественные числа) и размер (в битах) чисел.

• Типизированные массивы имеют фиксированную длину.

• Элементы типизированного массива всегда инициализируются значением 0 при его создании.

Всего существует восемь разновидностей типизированных массивов, каждый с различным типом элементов. Создавать их можно с помощью следующих конструкторов:

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

var bytes = new Uint8Array(1024); // Один килобайт байтов

  • Читать дальше
  • 1
  • ...
  • 446
  • 447
  • 448
  • 449
  • 450
  • 451
  • 452
  • 453
  • 454
  • 455
  • 456
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: