Skip to content

filter() ​

Conditionally succeed or fail based on a predicate.

Syntax ​

typescript
task.filter(
  predicate: (value: T) => boolean | Promise<boolean>,
  errorMessage?: string
): FuturableTask<T>

Parameters ​

predicate ​

Function that tests the value. If returns false, the task fails.

errorMessage (optional) ​

Custom error message when predicate fails. Default: "Filter predicate failed"

Return Value ​

A new FuturableTask<T> that fails if the predicate returns false.

Examples ​

Basic Validation ​

typescript
const task = FuturableTask
  .of(() => fetch('/api/user'))
  .map(res => res.json())
  .filter(user => user.age >= 18);

try {
  const adult = await task.run();
} catch (error) {
  console.log('User is not an adult');
}

Custom Error Message ​

typescript
const task = FuturableTask
  .of(() => getUserInput())
  .filter(
    input => input.length >= 3,
    'Input must be at least 3 characters'
  );

Async Predicate ​

typescript
const task = FuturableTask
  .of(() => fetchDocument())
  .filter(async doc => await validateDocument(doc));

Multiple Filters ​

typescript
const task = FuturableTask
  .of(() => fetchProduct())
  .filter(p => p.price > 0, 'Price must be positive')
  .filter(p => p.stock > 0, 'Product out of stock')
  .filter(p => !p.discontinued, 'Product discontinued');

See Also ​

Released under the MIT License.