← 返回首页
SharedStorageRunOperation - Web APIs | MDN

SharedStorageRunOperation

Deprecated: This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

The SharedStorageRunOperation interface of the Shared Storage API represents a Run output gate operation.

In this article

Instance methods

run()

Defines the structure to which the run() method defined inside a Run output gate operation should conform.

Examples

In this example, a class called ReachMeasurementOperation is defined in a worklet and is registered using SharedStorageWorkletGlobalScope.register() with the name reach-measurement. SharedStorageRunOperation defines the structure to which this class must conform, essentially defining the parameters required for the run() method. Other than this requirement, the functionality of the class can be defined flexibly.

js
// reach-measurement-worklet.js const SCALE_FACTOR = 65536; function convertContentIdToBucket(contentId) { return BigInt(contentId); } class ReachMeasurementOperation { async run(data) { const { contentId } = data; // Read from Shared Storage const key = "has-reported-content"; const hasReportedContent = (await this.sharedStorage.get(key)) === "true"; // Do not report if a report has been sent already if (hasReportedContent) { 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(key, true); } } // Register the operation register("reach-measurement", ReachMeasurementOperation);

Note: It is possible to define and register multiple operations in the same shared storage worklet module script with different names. See SharedStorageOperation for an example.

In the main browsing context, the reach-measurement operation is invoked using the WindowSharedStorage.run() method:

js
async function measureUniqueReach() { // Load the Shared Storage worklet await window.sharedStorage.worklet.addModule("reach-measurement-worklet.js"); // Run the reach measurement operation await window.sharedStorage.run("reach-measurement", { data: { contentId: "1234" }, }); } measureUniqueReach();

For more details about this example, see Unique reach measurement. See Shared Storage API for more examples.

Specifications

This feature does not appear to be defined in any specification.

Browser compatibility

Enable JavaScript to view this browser compatibility table.

See also