Git Product home page Git Product logo

cancellable-promise's Introduction

webpack-library-starter

Universal, non intrusive, token based Promise wrapper to make it cancellable

Build status Maintainability

Installation

npm

npm install @permettezmoideconstruire/cancellable-promise

Legacy <script> tag

include

<script src="https://unpkg.com/@permettezmoideconstruire/cancellable-promise"></script>

You can specify a npm release with

<script src="https://unpkg.com/@permettezmoideconstruire/[email protected]"></script>

Usage

โš ๏ธ Either import method rely on a global Promise object.

It's compatible with node.js implementation, and most browsers one.

You should polyfill Promise for older browsers though.

Import

// Import
import {
  cancellablePromise,
  CancelError,
  CancelToken
} from '@permettezmoideconstruire/cancellable-promise'

OR

const {
  cancellablePromise,
  CancelError,
  CancelToken
} = require('@permettezmoideconstruire/cancellable-promise')

Use

// Wrap a promise
const initialPromise = SOMETHING_ASYNC()
const cancelToken = new CancelToken()
const wrappedPromise = cancellablePromise(initialPromise, cancelToken)


// Somewhere, cancel the promise...
cancelToken.cancel()


//Then catch it
wrappedPromise
.then((res) => {
  //Actual, usual fulfill
})
.catch((err) => {
  if(err instanceOf CancelError) {
    //Handle cancel error
  }

  //Handle actual, usual error
})

Process

ES6 source files
       |
       |
    webpack
       |
       +--- babel, eslint
       |
  ready to use
     library
  in umd format

Scripts

  • npm run compile - produce builds for the app
  • npm run test - run tests
  • npm run build - compile and run tests
  • npm run dev - produces development version of your library and runs a watcher
  • npm run test:watch - run tests in watch mode

cancellable-promise's People

Contributors

cyrilchapon avatar brodanoel avatar folkengine avatar jonarod avatar ergenekonyigit avatar mikeerickson avatar jisupark avatar mkurapov avatar alvisisme avatar ghstahl avatar

Watchers

James Cloos avatar njlr 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.