metal-promise

    3.0.5 • Public • Published

    metal-promise

    Build Status

    /*!
     * Promises polyfill from Google's Closure Library in ES6.
     *
     *      Copyright 2013 The Closure Library Authors. All Rights Reserved.
     *
     * Promise support is not ready on all supported browsers,
     * therefore core.js is temporarily using Google's promises as polyfill. It
     * supports cancellable promises and has clean and fast implementation.
     */
    

    Use

    Simple use case

    import CancellablePromise from 'metal-promise';
     
    new CancellablePromise(function(resolve, reject) {
      asyncFunction(function(err) {
        if (err) {
          reject(err);
        }
        else {
          resolve();
        }
      });
    })
    .then(function() {
      // Invoked once resolved
    })
    .catch(function(err) {
      // Invoked once rejected
    });

    Progress tracking

    In addition to Google Closure's implementation of Promise, the ProgressPromise class is also provided for tracking the progress of an async process.

    import {ProgressPromise} from 'metal-promise';
     
    new ProgressPromise(function(resolve, reject, progress) {
      progress(0.3);
      progress(0.5);
      progress(0.7);
      progress(0.9);
     
      setTimeout(function() {
        resolve();
      }, 100);
    })
    .progress(progress => {
      // Will invoke 4 times, 0.3, 0.5, 0.7, 0.9
    })
    .then(function() {
      // Invoked after all progress calls
    });

    Note that the progress function must be invoked with a number between 0 and 1.

    progress(2); // TypeError: The progress percentage should be a number between 0 and 1

    It also cannot be invoked with a smaller number than the previous call.

    progress(0.3);
    progress(0.1); // Error: The progress percentage can't be lower than the previous percentage

    Advanced use cases

    To see more advanced documentation, please visit Google Closure Library's documentation;

    Setup

    1. Install a recent release of NodeJS if you don't have it yet.

    2. Install local dependencies:

    npm install
    
    1. Run the tests:
    npm test
    

    Contributing

    Check out the contributing guidelines for more information.

    Keywords

    Install

    npm i metal-promise

    DownloadsWeekly Downloads

    645

    Version

    3.0.5

    License

    BSD

    Unpacked Size

    114 kB

    Total Files

    13

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar
    • avatar