Skip to content

DyuldinKS/abort-signal-polyfill

Repository files navigation

abort-signal-polyfill

A lightweight polyfill for AbortSignal.any, AbortSignal.timeout, and AbortSignal.abort methods.

Features

Installation

npm install abort-signal-polyfill

Usage

import {
  installAbortSignalPolyfill,
  uninstallAbortSignalPolyfill,
} from 'abort-signal-polyfill';

// Install the polyfill
installAbortSignalPolyfill();

const timeoutSignal = AbortSignal.timeout(5000); // 5 second timeout
const controller = new AbortController();

// Combine signals - will abort if either timeout occurs or controller aborts
const signal = AbortSignal.any([timeoutSignal, controller.signal]);

try {
  const response = await fetch(url, { signal });
  const data = await response.json();
  // Handle successful response
} catch (err) {
  if (err.name === 'TimeoutError') {
    // Handle timeout case
    console.error('The request timed out');
  } else {
    // Handle other errors
    console.error('Request failed:', err);
  }
}

// Uninstall polyfills if needed
uninstallAbortSignalPolyfill();

TypeScript Support

import type { AbortSignalPolyfill } from 'abort-signal-polyfill';

// For older TypeScript versions that may not have proper types for AbortSignal
(AbortSignal as AbortSignalPolyfill).timeout(2000);

Browser Support

This polyfill works in all modern browsers that support AbortController and AbortSignal. For older browsers, you'll need to include a polyfill for AbortController first.

License

MIT

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published