Skip to content

Task Module

npm versionDownloadsInstall sizenpmBuild Status

This is a helper module for Minecraft Launcher. See the github home page for more information.


Progress Moniting

You can use @xmcl/task model to track the progress of a task. In the launcher, they are majorly download task.

This module implements a basic object model for task with progress. The task can be paused or cancelled.

    import { Task, TaskBase, task } from "@xmcl/task";

    class ATask extends TaskBase {
        // implement a task

    class BTask extends TaskBase {
        // implement a task

    // suppose you have such task
    const myTask = task("hello", function() {
        await this.yield(new ATask().setName("world"));
        await this.yield(new BTask().setName("xmcl"));

    // start a task
    const result = await task.startAndWait({
        onStart(task: Task<any>) {
            // the task path is the task name joined by dot (.)
            const path = task.path;
            console.log(`${path} started!`);
        onUpdate(task: Task<any>, chunkSize: number) {
            // a task update
        onFailed(task: Task<any>, error: any) {
            // on a task fail
        onSucceed(task: Task<any>, result: any) {
            // on task success
            const path = task.path;
            console.log(`${path} ended!`);
        // on task is paused/resumed/cancelled
        onPaused(task: Task<any>) { },
        onResumed(task: Task<any>) { },
        onCancelled(task: Task<any>) { },
    // the result will print like
    // hello started!
    // started!
    // ended!
    // hello.xmcl started!
    // hello.xmcl ended!
    // hello ended!

🧾 Classes

🤝 Interfaces

🏳️ Enums

🏭 Functions


createFork(): TaskContext["fork"]

Return Type

  • TaskContext["fork"]

Defined in: packages/task/index.ts:68


task(name: string, executor: TaskExecutor<T>, param: object= {}): TaskRoutine<T>


  • name: string
  • executor: TaskExecutor<T>
  • param: object

Return Type

  • TaskRoutine<T>

Defined in: packages/task/index.ts:391

⏩ Type Aliases


TaskExecutor: Function

Defined in: packages/task/index.ts:348