attempt-js

0.4.0 • Public • Published

NPM Build Status Coverage Status Dependency Status devDependency Status gratipay

IE 6+ Firefox 3.6+ Chrome 14+ Safari 4+ Opera 11+ iOS 3+ Android 4+

Attempt

Utility objects to represent and interact with asynchronous operations.

Install and use in Node

  1. Add the dependency: npm install attempt-js --save
  2. Import in your code and create new objects:
    var Attempt = require( "attempt-js" );
     
    var myAttempt = new Attempt( /* ... */ );
     
    // Note that 'new' is facultative!
    var myOtherAttempt = Attempt( /* ... */ );

Install and use in the Browser

Use a tool like Browserify or webpack.

Quick overview through code examples

Attempt( function( notifySuccess, notifyFailure, notifyProgress ) {
    firstAsync( function( error ) {
        notifyProgress( "first done" );
        if ( error ) {
            notifyFailure( error );
        } else {
            secondAsync( function( error, value ) {
                notifyProgress( "second done" );
                if ( error ) {
                    notifyFailure( error );
                } else {
                    notifySuccess( "first done" );
                }
            } );
        }
    } );
} ).progress( function( string ) {
    // the progress string as notified
} ).success( function( value ) {
    // the value from secondAsync if successful
} ).failure( function( error ) {
    // the error otherwise
} ).always( function() {
    // always called (for successes AND failures)
} );

Chain

var attempt = Attempt( function( notifySuccess ) {
    setTimeout( notifySuccess, 1000, 72 );
} );
 
attempt.success( function( value ) {
    value === 72;
} );
 
attempt.chain( function( value ) {
    return value * 2;
} ).success( function( value ) {
    value === 144;
} );
 
attempt.chain( function( value ) {
    return Attempt( function( notifySuccess ) {
        setTimeout( notifySuccess, 1000, value * 2 );
    } );
} ).success( function( value ) {
    value === 144;
} );

Join

var helloWorld = Attempt( function( notifySuccess ) {
    notifySuccess( "hello", "world" );
} );
 
var sixteen = Attempt( function( notifySuccess ) {
    notifySuccess( 16 );
} );
 
Attempt.join( helloWorld, sixteen, true ).success( function( a, b, c ) {
    // a is [ "hello", "world" ]
    // b is 16
    // c is true
} );
 
var failed = Attempt( function( _, notifyFailure ) {
    notifyFailure( "woops" );
} );
 
Attempt.join( helloWorld, failed ).failure( function( error ) {
    error === "woops";
} );

Utilities

var helloWorld = Attempt.createSuccess( "hello", "world" );
 
helloWorld.success( function( a, b ) {
    a === "hello";
    b === "world";
} );
 
var failed = Attempt.createFailure( "woops" );
 
failed.failure( function( arg ) {
    arg === "woops";
} );

Consume Promises

var promise = new Promise( function( resolve ) {
    resolve( "YEAH!" );
} );
 
Attempt( promise ).success( function( value ) {
    value === "YEAH!";
} );

Produce Promises

var attempt = Attempt( function( notifySuccess ) {
    notifySuccess( "YAWP!" );
} );
 
attempt.promise().then( function( value ) {
    value === "YAWP!";
} );

License

Copyright (c) 2015 Julian Aubourg

Licensed under the MIT license.

Readme

Keywords

none

Package Sidebar

Install

npm i attempt-js

Weekly Downloads

13

Version

0.4.0

License

none

Last publish

Collaborators

  • jaubourg