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

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

Жанры

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

// создает и инициализирует базу данных) и передает его функции f.

function withDB(f) {

var request = indexedDB.open("zipcodes"); // Открыть базу данных zipcode

request.onerгог = logerr; // Выводить сообщения об ошибках

request.onsuccess = function { // Или вызвать эту функцию по завершении

var db = request.resu.lt; // Результатом запроса является база данных

// Базу данных можно открыть всегда, даже если она не существует.

// Мы проверяем версию, чтобы узнать, была ли БД создана и инициализирована.

// Если нет - это необходимо сделать. Но если БД уже настроена,

// остается просто передать ее функции f.

if (db.version === "1") f(db); // Если БД существует, передать ее f

else initdb(db,f); // Иначе сначала инициализировать ее

}

}

// Принимает почтовый индекс, отыскивает город, которому он принадлежит,

// и асинхронно передает название города указанной функции,

function lookupCity(zip, callback) {

withDB(function(db) {

// Создать объект транзакции для этого запроса

var transaction = db.transaction(["zipcodes"],
// Требуемое хранилище

IDBTransaction.READ_0NLY, // He обновлять

0); // Время ожидания не ограничено

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

var objects = transaction.objectStoreC'zipcodes");

// Запросить объект, соответствующий указанному индексу.

// Строки выше выполнялись синхронно, но эта выполняется асинхронно

var request = objects.get(zip);

request.onerror = logerr; // Выводить сообщения об ошибках

request.onsuccess = function { // Передать результаты этой функции

// Искомый объект сейчас в свойстве request.result

var object = request.result;

if (object) // Если cootb. найдено, передать город и штат функции

callback(object.city + ", " + object.state);

else // Иначе сообщить о неудаче

callback("Неизвестный индекс");

}

});

}

// По указанному названию города отыскивает все почтовые индексы для всех

// городов (в любом штате) с этим названием (с учетом регистра символов).

// Асинхронно передает результаты по одному указанной функции

function lookupZipcodes(city, callback) {

withDB(function(db) {

// Как и выше, создаем транзакцию и получаем хранилище объектов

var transaction = db.transaction(["zipcodes"], IDBTransaction.READ_0NLY, 0);

var store = transaction.objectStoreC'zipcodes");

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

var index = store.index(”cities");

// Этот запрос может вернуть несколько результатов, поэтому, чтобы

// получить их все, следует использовать объект курсора. Чтобы создать

// курсор, нужно создать объект диапазона, представляющий диапазон ключей

var range = new IDBKeyRange.only(city); // Диапазон с одним ключом

// Все, что выше, выполняется синхронно.

// Теперь нужно запросить курсор, который возвращается асинхронно,

var request = index.openCursor(range); // Запросить курсор

request.onerror = logerr; // Сообщать об ошибках

request.onsuccess = function { // Передать курсор этой функции

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

Старый, но крепкий 9

Крынов Макс
9. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
сянься
5.00
рейтинг книги
Старый, но крепкий 9

Эволюционер из трущоб. Том 8

Панарин Антон
8. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 8

Первый среди равных. Книга VI

Бор Жорж
6. Первый среди Равных
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга VI

S-T-I-K-S. Пройти через туман

Елисеев Алексей Станиславович
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
7.00
рейтинг книги
S-T-I-K-S. Пройти через туман

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор

Я не царь. Книга XXIV

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

Гром с севера

Мазуров Дмитрий
8. Громовая поступь
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Гром с севера

Второгодка. Книга 2. Око за око

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

Кровь на клинке

Трофимов Ерофей
3. Шатун
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.40
рейтинг книги
Кровь на клинке

На границе империй. Том 10. Часть 5

INDIGO
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 5

Собрание сочинений в одной книге

Лондон Джек
Приключения:
морские приключения
прочие приключения
6.25
рейтинг книги
Собрание сочинений в одной книге

Ермак. Противостояние. Книга одиннадцатая

Валериев Игорь
11. Ермак
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Ермак. Противостояние. Книга одиннадцатая

На цепи

Уваров
1. На цепи
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
На цепи

Я Гордый часть 6

Машуков Тимур
6. Стальные яйца
Фантастика:
фэнтези
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 6