runAsync
@ts-rust/std / Result / runAsync
Function: runAsync()
function runAsync<T, E>(action, mkErr): PendingResult<T, E>;
Defined in: packages/std/src/result/result.ts:218
Executes an asynchronous action and wraps the outcome in a PendingResult, handling errors with a custom error mapper.
The runAsync function attempts to execute the provided action function,
which returns a value of type Promise<T>. If the action succeeds, it returns a
PendingResult that resolves to Ok variant containing the value.
If the action fails (throws an error), the error is passed to the mkErr function
to create an error of type E, which is then wrapped in an Err variant.
This function is useful for safely executing operations that might fail, ensuring errors are handled in a type-safe way using the Result type.
Type Parameters
| Type Parameter |
|---|
|
|
Parameters
| Parameter | Type | Description |
|---|---|---|
| () => | A function that performs the operation, returning a |
| ( | A function that converts an error (of type |
Returns
PendingResult<T, E>
A PendingResult<T, E> that resolves to either a value (Ok<T>) or the mapped error (Err<E>).
Example
import { run, PendingResult, Result } from "@ts-rust/std";
const pendingRes: PendingResult<string, Error> = runAsync(
(): Promise<string> =>
fetch("https://api.example.com/text").then((res) => res.text()),
(e) => new Error(`Fetch failed: ${JSON.stringify(e)}`),
);
const res: Result<string, Error> = await pendingRes;
if (res.isErr()) {
console.log(res.unwrapErr().message); // Fetch failed: ...
}