JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 22
  • Score
    100M100P100Q61903F
  • License Apache-2.0

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

Package Exports

  • @stdlib/utils-async-try-catch

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@stdlib/utils-async-try-catch) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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 © 2016-2021. The Stdlib Authors.