Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cancel

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cancel

A JavaScript library that provides primitives for creating cancelable asynchronous operations.

  • 0.2.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
21
increased by90.91%
Maintainers
1
Weekly downloads
 
Created
Source

cancel

npm version Build Status

A JavaScript library that provides primitives for creating cancelable asynchronous operations.

Installation

Install using npm:

npm install cancel

Example

import Cancellation, { CancellationError } from 'cancel';

// This is an example of a simple HTTP client that supports cancellation.
// The `sendRequest` method sends an HTTP request asynchronously.
// It takes a `Cancellation` object as one of its parameters.
function sendRequest(method, url, body, cancellation) {
  // Check if cancellation has already been requested
  if (cancellation.isCanceled()) {
    // Reject with `CancellationError` so that the caller can distinguish between cancellation and failure
    return Promise.reject(new CancellationError('Request has been canceled.'));
  };

  return new Promise(function executor(resolve, reject) {
    const request = new XMLHttpRequest();
    request.open(method, url, true);

    request.onload = () => resolve({
      status: request.status,
      body: request.response,
    });

    request.onerror = () => reject(new Error('A network error has occurred.'));

    // Add a listener that will be called when cancellation is requested
    cancellation.onCancel(() => {
      // Abort the HTTP request
      request.abort();
      // Reject with `CancellationError` so that the caller can distinguish between cancellation and failure
      reject(new CancellationError('Request has been canceled.'));
    });

    request.send(body);
  });
}

// Create a new `Cancellation` object
const cancellation = new Cancellation();

// Pass the `Cancellation` object to the `sendRequest` method
sendRequest('GET', 'https://api.github.com/users/nickuraltsev/starred', null, cancellation)
  .then(response => console.log(`Response status: ${response.status}`))
  .catch(error => {
    if (error instanceof CancellationError) {
      console.log('Request canceled');
    } else {
      console.log('Network failure');
    }
  });

// ...
// Cancel the request
cancellation.cancel();

API

Cancellation

new Cancellation()

Creates a new Cancellation object.

Instance methods
cancel()

Issues a cancellation request.

It is safe to call this method multiple times since all but the first call are ignored.

isCanceled()

Returns true if cancellation has been requested; otherwise, returns false.

onCancel(listener)

Adds a listener to be notified when cancellation is requested.

Parameters
  • listener - A function to be called when cancellation is requested.

Returns a function that, when called, removes the listener.

throwIfCanceled()

Throws a CancellationError if cancellation has been requested.

fork()

Creates a child Cancellation object that will be canceled when the parent object is canceled.

Static properties
CANCELED

Contains a Cancellation object that is already in the canceled state.

CancellationError

The error that is thrown when an operation is canceled.

new CancellationError([message])

Creates a new instance of CancellationError.

Parameters
  • message - The error message.

Semver

Prior to the release 1.0, minor versions may introduce breaking changes.

License

MIT

Keywords

FAQs

Package last updated on 24 Feb 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc