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
рейтинг книги
Бастард Императора. Том 13
13. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Тринадцатый X
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Вечный. Книга IV
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Гримуар темного лорда VII
7. Гримуар темного лорда
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Цикл "Отмороженный". Компиляция. Книги 1-14
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Гамбургский счет: Статьи – воспоминания – эссе (1914–1933)
Научно-образовательная:
история
5.00
рейтинг книги
Моров. Том 3
2. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Глэрд IX: Легионы во Тьме
9. Глэрд
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Изгой Проклятого Клана. Том 3
3. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Пересмешник
Фантастика:
фэнтези
9.38
рейтинг книги
Человеческое познание его сферы и границы
Научно-образовательная:
философия
6.25
рейтинг книги
Тринадцатый V
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00