@nick-wilde/js-task

2.0.0 • Public • Published

JSTask

利用Webworker实现的支持async/await异步等待的JS任务类,类似C# Task

安装

npm i @nick-wilde/js-task

示例

//模拟耗时方法
function fn(...args) {
    let startTime = performance.now()
    let now = performance.now();
    let offset = now - startTime;

    //模拟耗时运算
    let duration = Math.random() * 5 * 1000;//任务时长:0-5s
    while (offset < duration) {
        now = performance.now();
        offset = now - startTime;
    }
    console.info("线程执行序号:", args[0], "耗时(ms)", duration);

    //每一线程中的函数可以返回值
    return `hello thread ${args[0]}`;
}


// 将耗时方法包装成Task实例,此处创建5个Task进行测试
let count = 5;
let tasks = new Array(count);
for (let i = 0; i <= count; i++) {
    tasks[i] = new Task(fn, i);
}

//等待所有任务执行完毕示例
let results = await Task.All(tasks);
console.info(`所有任务均已执行完毕,同步多线程结果:`, results);

//等待任一任务执行结束示例
// let results = await Task.Race(tasks);
// console.info(`已存在执行完毕的任务(其他任务仍然会异步执行),该任务返回的结果:`, results);

API Doc

Task

Kind: global class
Date: 2022.08.22
Author: nick-wilde

new Task(fun, args)

利用Webworker实现的支持async/await异步等待的JS任务类,类似C# Task

Param Type Description
fun function 将作为任务在单独线程执行的函数
args * 要传入任务函数的参数

Task.All(tasks) ⇒ Promise

等待所有任务执行完毕再返回结果

Kind: static method of Task

Param Type
tasks Array.<Task>

Task.Race(tasks) ⇒ Promise

任一任务成功完成即返回结果

Kind: static method of Task

Param Type
tasks Array.<Task>

Package Sidebar

Install

npm i @nick-wilde/js-task

Weekly Downloads

0

Version

2.0.0

License

ISC

Unpacked Size

13.2 kB

Total Files

4

Last publish

Collaborators

  • nick-wilde