UNPKG

shaka-player

Version:
53 lines (45 loc) 1.32 kB
/*! @license * Shaka Player * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ goog.provide('shaka.util.OperationManager'); goog.require('shaka.util.ArrayUtils'); goog.require('shaka.util.IDestroyable'); /** * A utility for cleaning up AbortableOperations, to help simplify common * patterns and reduce code duplication. * * @implements {shaka.util.IDestroyable} */ shaka.util.OperationManager = class { /** */ constructor() { /** @private {!Array<!shaka.extern.IAbortableOperation>} */ this.operations_ = []; } /** * Manage an operation. This means aborting it on destroy() and removing it * from the management set when it complete. * * @param {!shaka.extern.IAbortableOperation} operation */ manage(operation) { this.operations_.push(operation.finally(() => { shaka.util.ArrayUtils.remove(this.operations_, operation); })); } /** @override */ destroy() { const cleanup = []; for (const op of this.operations_) { // Catch and ignore any failures. This silences error logs in the // JavaScript console about uncaught Promise failures. op.promise.catch(() => {}); // Now abort the operation. cleanup.push(op.abort()); } this.operations_ = []; return Promise.all(cleanup); } };