Чтение онлайн

на главную - закладки

Жанры

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

// Создать хранилище объектов, указав имя хранилища и объект с параметрами,

// включающий "путь к ключу", определяющий имя свойства-ключа для этого

// хранилища. (Если опустить путь к ключу, IndexedDB определит свой

// собственный уникальный целочисленный ключ.)

var store = db.createObjectStore("zipcodes", // имя хранилища

{ keyPath: "zipcode" });

//
Создать в хранилище объектов индекс по названию города.

// Строка пути к ключу передается этому методу непосредственно,

// как обязательный аргумент, а не как свойство объекта с параметрами,

store.createlndex("cities", "city");

// Теперь необходимо загрузить информацию о почтовых индексах, преобразовать

// ее в объекты и сохранить эти объекты в созданном выше хранилище.

//

// Файл с исходными данными содержит строки следующего вида:

//

// 02130,Jamaica Plain,MA.42.309998,-71.11171

// 02131,Roslindale,MA,42.284678,-71.13052

// 02132,West Roxbury.MA,42.279432,-71.1598

// 02133,Boston,MA,42.338947,-70.919635

// 02134,Allston,MA, 42.355147,-71.13164

//

// Как ни странно, но почтовая служба США не обеспечивает свободный доступ

// к этой информации, поэтому мы будет использовать устаревшие данные переписи

// с сайта: http://mappinghacks.com/2008/04/28/civicspace-zip-code-database/

// Для загрузки данных используется объект XMLHttpRequest.

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

// новые события onload и onprogress, определяемые спецификацией XHR2

var xhr = new XMLHttpRequest; // Объект XHR для загрузки данных

xhr.open("GET", "zipcodes.csv"); // HTTP-запрос типа GET для этого URL

xhr.send; // Запустить немедленно

xhr.oneг гог = status; //
Отображать сообщения об ошибках

var lastChar = 0, numlines = 0; // Уже обработанный объем

// Обрабатывает файл базы данных блоками, по мере загрузки

xhr.onprogress = xhr.onload = function(e) { // Сразу два обработчика!

// Обработать блок между lastChar и последним принятым символом

// перевода строки. (Нам требуется отыскать последний символ

// перевода строки, чтобы не обработать неполную запись)

var lastNewline = xhr.responseText.lastIndexOf("\n");

if (lastNewline > lastChar) {

var chunk = xhr.responseText.substring(lastChar, lastNewline)

lastChar = lastNewline + 1; // Откуда начинать в следующий раз

// Разбить новый фрагмент на строки

var lines = chunk.split("\n”);

numlines += lines.length;

// Чтобы вставить информацию о почтовом индексе в базу данных, необходимо

// получить объект транзакции. Все операции добавления объектов

// в базу данных, выполняемые с использованием этого объекта,

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

// когда броузер вернется в цикл обработки событий.

// Чтобы создать объект транзакции, следует определить,

// какие хранилища объектов будут использоваться (у нас имеется всего

// одно хранилище). Кроме того, требуется сообщить, что будет

// выполняться не только чтение, но и запись в базу данных:

var transaction = db.transaction(["zipcodes’'], // хранилища

IDBTransaction.READ_WRITE);

// Получить ссылку на хранилище из объекта транзакции

var store = transaction.objectStore("zipcodes");

// Теперь обойти в цикле строки в файле с почтовыми индексами,

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

Я не бог. Книга XXXIV

Дрейк Сириус
34. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не бог. Книга XXXIV

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.40
рейтинг книги
Играть... в тебя

Астровитянка

Горькавый Ник
1. Астровитянка
Фантастика:
научная фантастика
9.17
рейтинг книги
Астровитянка

Ричард Львиное Сердце: Поющий король

Сегень Александр Юрьевич
Проза:
историческая проза
5.00
рейтинг книги
Ричард Львиное Сердце: Поющий король

Петр и Алексей (Христос и Антихрист - 3)

Мережковский Дмитрий Сергеевич
Проза:
русская классическая проза
5.00
рейтинг книги
Петр и Алексей (Христос и Антихрист - 3)

Большой шеф Красной капеллы: Впервые в мире беседы с Леопольдом Треппером

Томин Валентин Романович
Герои тайной войны
Приключения:
исторические приключения
5.00
рейтинг книги
Большой шеф Красной капеллы: Впервые в мире беседы с Леопольдом Треппером

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Я все еще не царь. Книга XXVI

Дрейк Сириус
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI

Мисс совершенство

Робертс Нора
3. Инн-Бунсборо
Любовные романы:
современные любовные романы
9.33
рейтинг книги
Мисс совершенство

Джей

Kriu
Фантастика:
фэнтези
5.00
рейтинг книги
Джей

3ds Max 2008

Верстак Владимир
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
5.00
рейтинг книги
3ds Max 2008

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.40
рейтинг книги
Князь Андер Арес 3

Гуманитарное знание и вызовы времени

Коллектив авторов
Humanitas
Научно-образовательная:
культурология
5.00
рейтинг книги
Гуманитарное знание и вызовы времени

Рекламная деятельность газет и журналов

Назайкин Александр
Деловая литература:
маркетинг, pr, реклама
5.00
рейтинг книги
Рекламная деятельность газет и журналов