Giter Club home page Giter Club logo

cancellable's Introduction

Helper for creating cancellable promise-returning functions.

license - MIT Dependencies

NPM status

Build status

Example:

import cancellable from 'cancellable'

const promise = cancellable((cancellation, cancelled) => new Promise((resolve, reject) => {
  const xhr = new XMLHttpRequest()
  xhr.open('GET', '/ajax')
  xhr.addEventListener('error', () => reject(new Error('Something went wrong')))
  xhr.addEventListener('load', () => resolve(xhr.response))
  xhr.send()
  cancellation.catch((reason) => {
    xhr.abort()
    reject(reason)
  })
}))

// later

promise.cancel()

cancellable

Takes a promise-returning function that will be passed two arguments:

  • cancellation: Promise

    A promise that will be rejected with a CancellationError if the cancel method was invoked or otherwise resolves to the fulfilled/rejected value of the promise returned by the function.

  • cancelled: () => boolean

    A function that returns true if the cancel method was invoked or false otherwise. This function will return true even if the cancel method was invoked after the promise was fulfilled/rejected normally.

Returns the promise returned by the function but adds a cancel method that takes an optional argument:

  • message: string

    A message that will be used to create a CancellationError. Rejects the promise if it hasn't already been fulfilled/rejected.

cancellable.CancellationError

A subclass of Error that is used to reject cancelled promises.

As of 1.1.0 it also has a cancelled property (set to true) to easily distinguish it from other errors.

License

The MIT/Expat license. For more information, see http://foss-haas.mit-license.org/ or the accompanying LICENSE file.

cancellable's People

Contributors

pluma avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.