@stdlib/utils-async-try-catch
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.6 • Public • Published

    trycatchAsync

    NPM version Build Status Coverage Status dependencies

    If a function does not return an error, invoke a callback with the function result; otherwise, invoke a callback with a value y.

    Installation

    npm install @stdlib/utils-async-try-catch

    Usage

    var trycatchAsync = require( '@stdlib/utils-async-try-catch' );

    trycatchAsync( x, y, done )

    If a function x does not return an error, invokes a done callback with the function result; otherwise, invokes a done callback with a value y.

    var randu = require( '@stdlib/random-base-randu' );
    
    function x( clbk ) {
        setTimeout( onTimeout, 0 );
        function onTimeout() {
            if ( randu() > 0.5 ) {
                return clbk( null, 1.0 );
            }
            clbk( new Error( 'oops' ) );
        }
    }
    
    function done( error, result ) {
        if ( error ) {
            console.log( error.message );
        }
        console.log( result );
    }
    
    trycatchAsync( x, -1.0, done );

    The function x is provided a single argument:

    • clbk: callback to invoke upon function completion

    The callback accepts two arguments:

    • error: error object
    • result: function result

    The done callback is invoked upon function completion and is provided two arguments:

    • error: error object
    • result: either the result of x or the provided value y

    If the function x does not return a truthy error argument, the error argument provided to the done callback is null. If x does return a truthy error argument, the done callback is invoked with both the error and the provided value y.

    Notes

    • Execution is not guaranteed to be asynchronous. To guarantee asynchrony, wrap the done callback in a function which either executes at the end of the current stack (e.g., nextTick) or during a subsequent turn of the event loop (e.g., setImmediate, setTimeout).

    Examples

    var randu = require( '@stdlib/random-base-randu' );
    var trycatchAsync = require( '@stdlib/utils-async-try-catch' );
    
    var i;
    
    function next() {
        trycatchAsync( x, 'beep', done );
    }
    
    function x( clbk ) {
        setTimeout( onTimeout, 0 );
        function onTimeout() {
            if ( randu() > 0.9 ) {
                return clbk( null, 'BOOP' );
            }
            clbk( new Error( 'oops' ) );
        }
    }
    
    function done( error, result ) {
        if ( error ) {
            console.log( error.message );
        }
        i += 1;
        console.log( result );
        if ( i < 100 ) {
            return next();
        }
    }
    
    i = 0;
    next();

    Notice

    This package is part of stdlib, a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.

    For more information on the project, filing bug reports and feature requests, and guidance on how to develop stdlib, see the main project repository.

    Community

    Chat


    License

    See LICENSE.

    Copyright

    Copyright © 2016-2021. The Stdlib Authors.

    Install

    npm i @stdlib/utils-async-try-catch

    Homepage

    stdlib.io

    DownloadsWeekly Downloads

    14

    Version

    0.0.6

    License

    Apache-2.0

    Unpacked Size

    42 kB

    Total Files

    9

    Last publish

    Collaborators

    • stdlib-bot
    • kgryte
    • planeshifter
    • rreusser