2.0.9 • Published 2 years ago

@cleah/progress-schedule v2.0.9

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Progress Scheduler

Basic Usage

  import Schedule from '@cleah/progress-schedule'
  
  let schedule = new Schedule();

  schedule.schedule((progress)=>{
    console.log(`Progress ${progress.name} is running.`)
  }, "Basic Progress");

  // wait until progress completed
  await schedule.wait();

Schedule async progress

  let progress = schedule.schedule(async function(progress){
    await console.log(`Progress ${progress.name} is running.`);
  }, "Basic Async Progress");

  console.log(progress.toJson())

Schedule more progresses

  for (let i = 0; i < 10; i++){
    schedule.schedule((progress)=>{
      console.log(`Progress ${progress.name} is running.`)
    }, {
      name: `Progress ${i+1}`,
      onError: (error, progress) => {
        console.log(`Error on progress ${progress.name}`);
        console.error(error);
      },
      onComplete: (progress) => {
        console.log(`Completed progress ${progress.name}`);
      }
    });
  }

Execute tasks in progress

  let schedule = new Schedule();

  let progress = schedule.schedule(async function(progress){
    let tasks = [];
    for (let i = 0; i < 10; i++){
      tasks.push({});
    }

    await progress.each(tasks, async function(task, i, progress) {
      // do task here
    });
  }, {
    name: `Progress tasks`,
    onTaskComplete: (progress, task, index, error)=>{
      console.log(`Task ${index} done`);
    }
  })
  await schedule.wait();

  console.log(progress.toJson())

Execute tasks in progress in parallel

async function runTasksParallel(){
  let schedule = new Schedule();

  let progress = schedule.schedule(async function(progress){
    let tasks = [];
    for (let i = 0; i < 10; i++){
      tasks.push({});
    }

    await progress.each(tasks, async function(task, i, progress) {
      await delay(Math.random() * 1000);
    }, 3);
  }, {
    name: `Progress tasks in parallel`,
    onTaskComplete: (progress, task, index, error)=>{
      console.log(`Task ${index} done`);
    }
  })
  await schedule.wait();

  console.log(progress.toJson())
}

async function delay(time){
  return new Promise((resolve)=>{
    setTimeout(()=>{
      resolve();
    }, time);
  });
}

Execute sub tasks

  let progress = schedule.schedule(async function(progress){
    let tasks = [];
    for (let i = 0; i < 10; i++){
      tasks.push({});
    }

    await progress.sub(async function(){
      console.log("Test sub progress 1")
    }, "Sub Progress 1");

    await progress.sub(async function(){
      console.log("Test sub progress 2")
    }, "Sub Progress 2");

  }, {
    name: `Progress sub tasks`,
  })

  await schedule.wait();
  console.log(progress.toJson())

Cancel progress

  let progress = schedule.schedule((progress)=>{
    console.log(`Progress ${progress.name} is running.`)
  }, "Cancel Progress");

  progress.cancel();

Cancel progress tasks

  let progress = schedule.schedule(async function(progress){
    let tasks = [];
    for (let i = 0; i < 10; i++){
      tasks.push({});
    }

    await progress.each(tasks, async function(task, i, progress) {
      await delay(Math.random() * 1000);
    }, 3);
  }, {
    name: `Progress tasks in parallel`,
    onTaskComplete: (progress, task, index, error)=>{
      console.log(`Task ${index} done`);
    }
  })

  await delay(500);
  progress.cancel();
2.0.7

2 years ago

2.0.9

2 years ago

2.0.8

2 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.6

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago