Spec-Zone.ru › Web APIs

WorkletSharedStorage: метод get()

Экспериментально: Это экспериментальная технология
Перед использованием в продуктовой среде внимательно проверьте таблицу совместимости браузеров.

Метод get() интерфейса WorkletSharedStorage извлекает значение из общего хранилища.

Синтаксис

get(key)

Параметры

key

Строка, представляющая ключ пары «ключ-значение», которую нужно извлечь.

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

Объект Promise, который выполняется со строкой, равной значению извлечённой пары «ключ-значение», или undefined, если указанный key не найден в общем хранилище.

Исключения

TypeError

Выбрасывается, если:

  • Модуль worklet ещё не добавлен с помощью addModule().
  • key превышает максимальную длину, определённую браузером.
  • У вызывающей стороны нет API общего хранилища, включённого в успешный процесс регистрации в области конфиденциальности.

Примеры

Измерение частоты K+

Следующий пример измеряет частоту K+ просмотров контента. Иногда описывается как «эффективная частота», частота K — это минимальное количество просмотров, прежде чем пользователь распознает или вспомнит определённый контент (часто используется в контексте просмотров рекламы).

Основной скрипт страницы:

// k-frequency-measurement.js

async function injectContent() {
  // Load the Shared Storage worklet
  await window.sharedStorage.worklet.addModule('k-freq-measurement-worklet.js');

  // Run the K-frequency measurement operation
  await window.sharedStorage.run('k-freq-measurement', { data: { kFreq: 3, contentId: 123 });
}

injectContent();

Модуль worklet показан ниже:

// k-frequency-measurement-worklet.js

// Scale factor for handling noise added to data
const SCALE_FACTOR = 65536;

/**
 * The bucket key must be a number, and in this case, it is simply the content
 * ID itself. For more complex bucket key construction, see other use cases in
 * this demo.
 */
function convertContentIdToBucket(contentId) {
  return BigInt(contentId);
}

class KFreqMeasurementOperation {
  async run(data) {
    const { kFreq, contentId } = data;

    // Read from Shared Storage
    const hasReportedContentKey = "has-reported-content";
    const impressionCountKey = "impression-count";
    const hasReportedContent =
      (await this.sharedStorage.get(hasReportedContentKey)) === "true";
    const impressionCount = parseInt(
      (await this.sharedStorage.get(impressionCountKey)) || 0,
    );

    // Do not report if a report has been sent already
    if (hasReportedContent) {
      return;
    }

    // Check impression count against frequency limit
    if (impressionCount < kFreq) {
      await this.sharedStorage.set(impressionCountKey, impressionCount + 1);
      return;
    }

    // Generate the aggregation key and the aggregatable value
    const bucket = convertContentIdToBucket(contentId);
    const value = 1 * SCALE_FACTOR;

    // Send an aggregatable report via the Private Aggregation API
    privateAggregation.sendHistogramReport({ bucket, value });

    // Set the report submission status flag
    await this.sharedStorage.set(hasReportedContentKey, "true");
  }
}

// Register the operation
register("k-freq-measurement", KFreqMeasurementOperation);

Дополнительные сведения об этом примере можно найти на странице измерения частоты K+. На странице-приземлении API общего хранилища Shared Storage API есть ссылки на другие примеры.

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

Спецификация не найдена

Данные спецификации для api.WorkletSharedStorage.get не найдены.
Проверьте наличие проблем на этой странице или внесите недостающую spec_url в mdn/browser-compat-data. Также убедитесь, что спецификация включена в w3c/browser-specs.

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

См. также

  • API общего хранилища
  • Шум и масштабирование на developers.google.com (2023)

© 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/WorkletSharedStorage/get

Spec-Zone.ru

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