Spec-Zone.ru › Web APIs

IDBCursor: метод continuePrimaryKey()

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2021 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Потоках Web Workers.

Метод continuePrimaryKey() интерфейса IDBCursor перемещает курсор к элементу, ключ которого совпадает с параметром key, а первичный ключ — с параметром primary key.

Типичный случай использования — возобновление итерации, где предыдущий курсор был закрыт, без необходимости сравнивать ключи по одному.

Вызов этого метода более одного раза до загрузки новых данных курсора — например, вызов continuePrimaryKey() дважды из одного и того же обработчика onsuccess — приводит к сбросу InvalidStateError во время второго вызова, потому что флаг значения курсора сброшен.

Этот метод допустим только для курсоров, полученных из индекса. Использование его для курсоров, полученных из хранилища объектов, вызовет ошибку.

Синтаксис

continuePrimaryKey(key, primaryKey)

Параметры

key

Ключ, по которому нужно расположить курсор.

primaryKey

Первичный ключ, по которому нужно расположить курсор.

Возвращаемое значение

Ничего (undefined).

Исключения

Этот метод может вызвать исключение DOMException одного из следующих типов:

TransactionInactiveError DOMException

Выбрасывается, если транзакция этого IDBCursor неактивна.

DataError DOMException

Выбрасывается, если параметр key имеет любое из следующих условий:

  • Ключ не является допустимым ключом.
  • Ключ меньше или равен текущей позиции курсора, и направление курсора — next или nextunique.
  • Ключ больше или равен текущей позиции курсора, и направление курсора — prev или prevunique.
InvalidStateError DOMException

Выбрасывается, если курсор в данный момент итерируется или итерация прошла за его конец.

InvalidAccessError DOMException

Выбрасывается, если направление курсора не prev или next.

Примеры

Вот как можно возобновить итерацию по всем статьям с тегом "javascript" с момента последнего посещения:

let request = articleStore.index("tag").openCursor();
let count = 0;
let unreadList = [];
request.onsuccess = (event) => {
  let cursor = event.target.result;
  if (!cursor) {
    return;
  }
  let lastPrimaryKey = getLastIteratedArticleId();
  if (lastPrimaryKey > cursor.primaryKey) {
    cursor.continuePrimaryKey("javascript", lastPrimaryKey);
    return;
  }
  // update lastIteratedArticleId
  setLastIteratedArticleId(cursor.primaryKey);
  // preload 5 articles into the unread list;
  unreadList.push(cursor.value);
  if (++count < 5) {
    cursor.continue();
  }
};

Спецификации

Спецификация
Indexed Database API 3.0
# ref-for-dom-idbcursor-continueprimarykey①

Совместимость браузеров

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari в iOS Samsung Internet WebView Android
continuePrimaryKey 58 79 10 45 10.1 58 51 43 10.3 7.0 58

См. также

  • Использование IndexedDB
  • Начало транзакций: IDBDatabase
  • Использование транзакций: IDBTransaction
  • Установление диапазона ключей: IDBKeyRange
  • Получение и изменение данных: IDBObjectStore
  • Использование курсоров: IDBCursor
  • Пример ссылок: Уведомления о задачах (Просмотреть пример онлайн).

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor/continuePrimaryKey

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API