@brainsights/promise-task

Lazy promises with support for cancellation and progress events

Usage no npm install needed!

<script type="module">
  import brainsightsPromiseTask from 'https://cdn.skypack.dev/@brainsights/promise-task';
</script>

README

Lazy promises with progress and cancelation.

Installation

npm install promise-task

Usage

Use a task anywhere you would use a promise, with a few minor changes.

const Task = require("promise-task");

let task = new Task((context) => {
    let progress = 0;
    let timer;
    timer = setInterval(() => {
        progress += 1;
        if(progress >= 100) {
            clearTimeout(timer);
            context.progress(100);
            context.resolve(true);
        } else {
            context.progress(progress);
        }
    }, 100);

    context.onCancel = () => {
        clearTimeout(timer);
    };
});

task.on("progress", (progress) => console.log(progress));
await task.run();

Task#constructor

Create a new task by new Task(executor).

  • executor (Function) accepts a single argument, context.

Task#run()

Invoke this to begin executing the task. Returns a Promise that is resolved or rejected when the task completes.

Task#progress()

Returns the current progress as number.

Task#cancel()

Cancels execution and rejects the associated promise.

Task#isCanceled()

Returns true if the task is canceled, false otherwise.

Task#clone()

Creates a copy of a task instance.

Task#series(tasks)

Returns a new Task that wraps one or more tasks that are executed one-at-a-time.

tasks (Array): A list of tasks to execute in series when run() is invoked.

Task.error

Task property that contains the last Error if there is one, or null.

Context#resolve(result)

Invoke this from the executor to resolve the associated promise.

  • result (Any): The successful result of the completed task.

Context#reject(error)

Invoke this from the exectutor to reject the associated promise.

  • error (Error): An error explaining why the task failed.

Context#progress(value)

Invoke this from the executor to update the task progress.

  • value: A number between 0 and 100 (inclusive).

Context.onCancel(callback)

Set this property to the callback that should be invoked if the task is canceled. This property is only writable, and cannot be read.

  • callback (Function): A callback function invoked when Task.cancel() is called.