Options
All
  • Public
  • Public/Protected
  • All
Menu

Module collection

Index

Functions

Functions

all

  • Creates a Promise that resolves to either a SuccessResult or a FailureResult.

    This behaves pretty much the same as Promise.all(), so it will abort and return a FailureResult as soon as a value is a rejected value.

    example

    Example with all resolved promises

    const values = [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)]
    const [res, err] = (await Result.all(values)).unwrap()
    
    if (err) { // This will never be `true` in this case
      return
    }
    
    console.log(
      res.map((num) => `Result ${num}`).join(', ')
    )
    
    // Result 1, Result 2, Result 3
    
    example

    Example where one or more promises are rejected

    const values = [Promise.resolve(1), Promise.reject(2), Promise.resolve(3)]
    const [res, err] = (await Result.all(values)).unwrap()
    
    if (err) { // This will always be `true` in this case
      console.error('An error occured:', err.message)
      return
    }
    

    Type parameters

    • T

    Parameters

    • values: (T | PromiseLike<T>)[]

    Returns Promise<SuccessResult<ValueType<T>[]> | FailureResult>

allSettled

  • Creates a Promise that resovles after all values have either resolved or rejected.

    note

    The returned SuccessAndFailureResult object can indicate being both a success and failure.

    If SuccessAndFailureResult.success is true there are one or more resovled promises.

    Likewise, if SuccessAndFailureResult.failure is true there are one or more rejected promises.

    example
    const args = [
      Promise.resolve(success(1)),
      Promise.resolve(success(2)),
      Promise.reject(failure(new Error('First failure'))),
    ]
    
    const res = await Result.allSettled(args)
    
    if (res.success) { // Will be `true` in this case
      console.log('Values:', res.result.join(', '))
      // Values: 1, 2
    }
    
    if (res.failure) { // Will also be true in this case
      console.error('Errors:', res.error.map((e) => e.message).join(', '))
      // Errors: First failure
    }
    

    Type parameters

    • T

    Parameters

    • values: (T | Promise<T>)[]

    Returns Promise<SuccessAndFailureResult<ValueType<T>[], Error[]>>

Generated using TypeDoc