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

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

Жанры

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");

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

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

Хозяин Теней 7

Петров Максим Николаевич
7. Безбожник
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Хозяин Теней 7

Бастард Императора. Том 13

Орлов Андрей Юрьевич
13. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 13

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Второгодка. Книга 3. Ученье свет

Ромов Дмитрий
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет

Гримуар темного лорда VII

Грехов Тимофей
7. Гримуар темного лорда
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда VII

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Гамбургский счет: Статьи – воспоминания – эссе (1914–1933)

Шкловский Виктор Борисович
Научно-образовательная:
история
5.00
рейтинг книги
Гамбургский счет: Статьи – воспоминания – эссе (1914–1933)

Моров. Том 3

Кощеев Владимир
2. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 3

Глэрд IX: Легионы во Тьме

Владимиров Денис
9. Глэрд
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Глэрд IX: Легионы во Тьме

Изгой Проклятого Клана. Том 3

Пламенев Владимир
3. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 3

Пересмешник

Пехов Алексей Юрьевич
Фантастика:
фэнтези
9.38
рейтинг книги
Пересмешник

Человеческое познание его сферы и границы

Рассел Бертран Артур Уильям
Научно-образовательная:
философия
6.25
рейтинг книги
Человеческое познание его сферы и границы

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый V