Nobody Publish Monsters

    p-reflect
    TypeScript icon, indicating that this package has built-in type declarations

    3.1.0 • Public • Published

    p-reflect

    Make a promise always fulfill with its actual fulfillment value or rejection reason

    Useful when you want a promise to fulfill no matter what and would rather handle the actual state afterwards.

    Install

    $ npm install p-reflect
    

    Usage

    Here, Promise.all would normally fail early because one of the promises rejects, but by using p-reflect, we can ignore the rejection and handle it later on.

    import pReflect from 'p-reflect';
    
    const promises = [
    	getPromise(),
    	getPromiseThatRejects(),
    	getPromise()
    ];
    
    const results = await Promise.all(promises.map(pReflect));
    
    console.log(results);
    /*
    [
    	{
    		status: 'fulfilled',
    		value: '🦄'
    		isFulfilled: true,
    		isRejected: false
    	},
    	{
    		status: 'rejected',
    		reason: [Error: 👹]
    		isFulfilled: false,
    		isRejected: true
    	},
    	{
    		status: 'fulfilled',
    		value: '🐴'
    		isFulfilled: true,
    		isRejected: false
    	}
    ]
    */
    
    const resolvedString = results
    	.filter(result => result.isFulfilled)
    	.map(result => result.value)
    	.join('');
    
    console.log(resolvedString);
    //=> '🦄🐴'

    The above is just an example. Use p-settle if you need exactly that.

    API

    pReflect(promise)

    Returns a Promise<Object>.

    The object has the following properties:

    • status ('fulfilled' or 'rejected', depending on how the promise resolved)
    • value or reason (Depending on whether the promise fulfilled or rejected)
    • isFulfilled
    • isRejected

    promise

    Type: Promise

    A promise to reflect upon.

    isFulfilled(object)

    This is a type guard for TypeScript users.

    Returns true if the object has the property value, false otherwise.

    This is useful since await pReflect(promise) always returns a PromiseResult. This function can be used to determine whether PromiseResult is PromiseFulfilledResult or PromiseRejectedResult.

    This is a workaround for microsoft/TypeScript#32399

    isRejected(object)

    This is a type guard for TypeScript users.

    Returns true if the object has the property reason, false otherwise.

    This is useful since await pReflect(promise) always returns a PromiseResult. This function can be used to determine whether PromiseResult is PromiseRejectedResult or PromiseFulfilledResult.

    Related

    • p-settle - Settle promises concurrently and get their fulfillment value or rejection reason
    • More…

    Install

    npm i p-reflect

    DownloadsWeekly Downloads

    656,345

    Version

    3.1.0

    License

    MIT

    Unpacked Size

    7.11 kB

    Total Files

    5

    Last publish

    Collaborators

    • sindresorhus