Files
welshman/docs/lib/deferred.md
T
2025-06-04 14:13:45 -07:00

41 lines
1.1 KiB
Markdown

# Deferred Promises
The `Deferred` module provides utilities for creating promises with exposed resolve/reject functions and typed error handling. This is particularly useful for managing asynchronous operations where you need external control over promise resolution.
## API
```typescript
// Creates a Deferred promise
export declare const defer: <T, E = T>() => Deferred<T, E>;
// Promise with exposed resolve/reject functions and typed error
export type Deferred<T, E = T> = CustomPromise<T, E> & {
resolve: (arg: T) => void;
reject: (arg: E) => void;
};
// Creates a Promise with strongly typed error
export declare function makePromise<T, E>(
executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason: E) => void) => void,
): CustomPromise<T, E>;
```
## Example
```typescript
import { defer } from '@welshman/lib';
// Create a deferred promise
const deferred = defer<string>();
// Resolve it externally
setTimeout(() => {
deferred.resolve('Hello, world!');
}, 1000);
// Use it like a regular promise
deferred.then(value => {
console.log(value); // "Hello, world!"
});
```