Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

var indexedDB = window.indexedDB || // Использовать стандартный API БД

window.mozIndexedDB || // Или раннюю версию в Firefox

window.webkitlndexedDB; // Или раннюю версию в Chrome

// В Firefox не используются префиксы для следующих двух объектов:

var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;

var IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;

// Эта функция будет использоваться для вывода сообщений об ошибках

function logerr(e) {

console.log("Ошибка IndexedDB " + e.code + ": " + e.message);

}

// Эта функция асинхронно получает объект базы данных (при необходимости

// создает и инициализирует базу данных) и передает его функции 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 // Иначе сообщить о неудаче

  • Читать дальше
  • 1
  • ...
  • 462
  • 463
  • 464
  • 465
  • 466
  • 467
  • 468
  • 469
  • 470
  • 471
  • 472
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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