/
githubmirror
/
amphtml
Обзор
Документация
Войти
/
githubmirror
/
amphtml
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/polyfills/abort-controller.js
80 строк
2 KB
Kristofer Baxter
♻️ Remove Notice from JS and Markdown (#35717)
19 авг 2021, 21:21
Не верифицирован
19 авг 2021, 21:21
f564b7e
Код
Авторство
О чём код?
/** Polyfill for the public AbortController. */ class AbortController { /** Constructor. */ constructor() { /** @const {!AbortSignal} */ this.signal_ = new AbortSignal(); } /** Triggers an abort signal. */ abort() { if (this.signal_.isAborted_) { // Already aborted. return; } this.signal_.isAborted_ = true; if (this.signal_.onabort_) { const event = /** @type {!Event} */ ({ 'type': 'abort', 'bubbles': false, 'cancelable': false, 'target': this.signal_, 'currentTarget': this.signal_, }); this.signal_.onabort_(event); } } /** @return {!AbortSignal} */ get signal() { return this.signal_; } } /** Polyfill for the public AbortSignal. */ class AbortSignal { /** */ constructor() { /** @private {boolean} */ this.isAborted_ = false; /** @private {?function(!Event)} */ this.onabort_ = null; } /** @return {boolean} */ get aborted() { return this.isAborted_; } /** @return {?function(!Event)} */ get onabort() { return this.onabort_; } /** @param {?function(!Event)} value */ set onabort(value) { this.onabort_ = value; } } /** * Sets the AbortController and AbortSignal polyfills if not defined. * @param {!Window} win */ export function install(win) { if (win.AbortController) { return; } Object.defineProperty(win, 'AbortController', { configurable: true, enumerable: false, writable: true, value: AbortController, }); Object.defineProperty(win, 'AbortSignal', { configurable: true, enumerable: false, writable: true, value: AbortSignal, }); }