Skip to main content
Deno 2 is finally here 🎉️
Learn more
Module

x/ayonli_jsext/dialog.ts>progress

A JavaScript extension package for building strong and modern applications.
Latest
function progress
Re-export
import { progress } from "https://deno.land/x/ayonli_jsext@v0.9.72/dialog.ts";

Displays a dialog with a progress bar indicating the ongoing state of the fn function, and to wait until the job finishes or the user cancels the dialog.

Examples

Example 1

// default usage
import { progress } from "@ayonli/jsext/dialog";

const result = await progress("Processing...", async () => {
    // ... some long-running task
    return { ok: true };
});

console.log(result); // { ok: true }

Example 2

// update state
import { progress } from "@ayonli/jsext/dialog";

const result = await progress("Processing...", async (set) => {
    set({ percent: 0 });
    // ... some long-running task
    set({ percent: 50, message: "Halfway there!" });
    // ... some long-running task
    set({ percent: 100 });

    return { ok: true };
});

console.log(result); // { ok: true }

Example 3

// abortable
import { progress } from "@ayonli/jsext/dialog";

const result = await progress("Processing...", async (set, signal) => {
    set({ percent: 0 });

    if (!signal.aborted) {
        // ... some long-running task
        set({ percent: 50, message: "Halfway there!" });
    }

    if (!signal.aborted) {
        // ... some long-running task
        set({ percent: 100 });
    }

    return { ok: true };
}, () => {
    return { ok: false };
});

console.log(result); // { ok: true } or { ok: false }

Parameters

message: string

If provided, the dialog will show a cancel button (or listen for Escape in CLI) that allows the user to abort the task. This function can either return a default/fallback result or throw an error to indicate the cancellation.

optional
onAbort: ProgressAbortHandler<T> | undefined = [UNSUPPORTED]

Returns

Promise<T | null>