/
moreqqq
/
DeliveryService
Обзор
Документация
Войти
/
moreqqq
/
DeliveryService
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/node_modules/node-abort-controller/index.js
68 строк
2 KB
moreqqq
написал приложение
29 май 2026, 22:02
29 май 2026, 22:02
ad51790
Код
Авторство
О чём код?
const { EventEmitter } = require("events"); class AbortSignal { constructor() { this.eventEmitter = new EventEmitter(); this.onabort = null; this.aborted = false; this.reason = undefined; } toString() { return "[object AbortSignal]"; } get [Symbol.toStringTag]() { return "AbortSignal"; } removeEventListener(name, handler) { this.eventEmitter.removeListener(name, handler); } addEventListener(name, handler) { this.eventEmitter.on(name, handler); } dispatchEvent(type) { const event = { type, target: this }; const handlerName = `on${type}`; if (typeof this[handlerName] === "function") this[handlerName](event); this.eventEmitter.emit(type, event); } throwIfAborted() { if (this.aborted) { throw this.reason; } } static abort(reason) { const controller = new AbortController(); controller.abort(); return controller.signal; } static timeout(time) { const controller = new AbortController(); setTimeout(() => controller.abort(new Error("TimeoutError")), time); return controller.signal; } } class AbortController { constructor() { this.signal = new AbortSignal(); } abort(reason) { if (this.signal.aborted) return; this.signal.aborted = true; if (reason) this.signal.reason = reason; else this.signal.reason = new Error("AbortError"); this.signal.dispatchEvent("abort"); } toString() { return "[object AbortController]"; } get [Symbol.toStringTag]() { return "AbortController"; } } module.exports = { AbortController, AbortSignal };