UNPKG

@opentelemetry/core

Version:

OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.

36 lines (35 loc) • 873 B
import { Deferred } from "./promise.mjs"; //#region src/utils/callback.ts /** * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked. */ var BindOnceFuture = class { _isCalled = false; _deferred = new Deferred(); _callback; _that; constructor(callback, that) { this._callback = callback; this._that = that; } get isCalled() { return this._isCalled; } get promise() { return this._deferred.promise; } call(...args) { if (!this._isCalled) { this._isCalled = true; try { Promise.resolve(this._callback.call(this._that, ...args)).then((val) => this._deferred.resolve(val), (err) => this._deferred.reject(err)); } catch (err) { this._deferred.reject(err); } } return this._deferred.promise; } }; //#endregion export { BindOnceFuture }; //# sourceMappingURL=callback.mjs.map