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 { // Передать курсор этой функции
Поделиться:
Популярные книги
Третий. Том 2
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Неучтенный элемент. Том 3
3. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Я еще не барон
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Воронцов. Перезагрузка. Книга 4
4. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Князь Андер Арес 3
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Трое с площади Карронад
Детские:
детские приключения
9.10
рейтинг книги
Первый среди равных. Книга II
2. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 19
19. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Зодчий. Книга II
2. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Лекарь Империи 6
6. Лекарь Империи
Фантастика:
городское фэнтези
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 3
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Гром Раскатного. Том 2
2. Штормовой Предел
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Старый, но крепкий 5
5. Культивация без насилия
Фантастика:
рпг
аниме
уся
фэнтези
5.00
рейтинг книги
Прапорщик. Назад в СССР. Книга 6
6. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00