fn
computedAsync
v0.0.14testeddemoComputed value driven by an async (promise-returning) evaluation
callback. The value updates reactively when its dependencies change, exposing
an optional evaluating ref for pending state, an onError handler, lazy
evaluation, and a default value used until the first resolution settles.
Out-of-order resolutions are discarded so only the latest run wins, and an
onCancel hook lets callbacks abort stale work.
Examples
ts
const id = ref(1);
const user = computedAsync(async () => {
const res = await fetch(`/api/users/${id.value}`);
return res.json();
}, null);ts
const evaluating = ref(false);
const data = computedAsync(async () => fetchData(), [], { evaluating });
// evaluating.value is true while the promise is pendingts
// Abort stale requests when dependencies change mid-flight
const result = computedAsync(async (onCancel) => {
const controller = new AbortController();
onCancel(() => controller.abort());
const res = await fetch(url.value, { signal: controller.signal });
return res.json();
}, undefined, { lazy: true });Demo
Loading demo…
Signatures
ts
export function computedAsync<T>(
evaluationCallback: (onCancel: AsyncComputedOnCancel) => T | Promise<T>,
initialState: T,
optionsOrRef: UseComputedAsyncOptions<true>,
): ComputedRef<T>;ts
export function computedAsync<T>(
evaluationCallback: (onCancel: AsyncComputedOnCancel) => T | Promise<T>,
initialState: undefined,
optionsOrRef: UseComputedAsyncOptions<true>,
): ComputedRef<T | undefined>;ts
export function computedAsync<T>(
evaluationCallback: (onCancel: AsyncComputedOnCancel) => T | Promise<T>,
initialState: T,
optionsOrRef?: Ref<boolean> | UseComputedAsyncOptions,
): Ref<T>;ts
export function computedAsync<T>(
evaluationCallback: (onCancel: AsyncComputedOnCancel) => T | Promise<T>,
initialState?: undefined,
optionsOrRef?: Ref<boolean> | UseComputedAsyncOptions,
): Ref<T | undefined>;Type Parameters
TParameters
| Parameter | Type | Description |
|---|---|---|
evaluationCallback | (onCancel: AsyncComputedOnCancel) => T | Promise<T> | Promise-returning function producing the value |
initialState? | T | Value used until the first evaluation resolves |
optionsOrRef? | Ref<boolean> | UseComputedAsyncOptions | Options object, or a Ref<boolean> used as the evaluating ref |
Returns
UseComputedAsyncReturn<T> | UseComputedAsyncReturn<T | undefined>A ref holding the latest resolved value (a ComputedRef when lazy)