*nix Programming Mammals

    @drumtj/task-queue

    1.0.34 • Public • Published

    Task Queue

    npm version license

    task management queue

    Features

    Installing

    Using npm:

    $ npm install @drumtj/task-queue

    Using cdn:

    <script src="https://unpkg.com/@drumtj/task-queue@1.0.34/dist/task-queue.js"></script>

    Using amd, commonjS Module

    const TaskQueue = require('@drumtj/task-queue');
    import TaskQueue from '@drumtj/task-queue';

    How To

    ex) image list loader

    make sample data

    var url = "https://as.ftcdn.net/r/v1/pics/2fd8819a419c4245e5429905770db4b570661f48/home/discover_collections/Images.jpg";
    //sample data
    var urls = new Array(5).fill(url).map(v=>v+"?r="+(Math.floor(Math.random()*10000)));

    define callback (use promise)

    //process callback function
    function load(url){
      console.error("load", url);
      return new Promise(resolve=>{
        let img = new Image();
        img.onload = ()=>resolve(img);
        img.src = url;
      })
    }
    //process complete callback function
    function loaded(img){
    	console.error("loaded", img);
    }
    //complete callback function
    function allLoaded(result){
    	console.error("all loaded", result);
    }

    direct return case

    //process callback function
    async function load(url, param){  
      console.error("load", url);
      let img = await new Promise(resolve=>{
        let img = new Image();
        img.onload = ()=>resolve(img);
        img.src = url;
      })
      return img;
    }

    use TaskQueue

    // new TaskQueue(urls, load).process();
    // new TaskQueue(urls, load, loaded).process();
    // new TaskQueue(urls, load, null, allLoaded).process();
    new TaskQueue(urls, load, loaded, allLoaded).process(-1); //call for sequencable

    other usecase

    let queue = new TaskQueue();
    queue.pushFromArray(urls);
    queue.setProcessCallback(load);
    queue.setProcessCompleteCallback(loaded);
    queue.setCompleteCallback(allLoaded);
    //call for one step
    queue.process();
    //call for one step with param
    queue.process(1, "param");
    //call for two step
    queue.process(2);
    //call for sequential step
    queue.process(-1);
    
    //It is processed by traversing all data in all lists in a way that minimizes CPU locks.
    queue.sequentialProcess();
    // queue.sequentialProcess(2, "param"); //minSequenceUnit, param

    data management

    let priority = true;//optional; -> when is true data is inserted at the beginning of the internal queue
    let key = queue.push("data", priority);
    let keys = queue.pushFromArray(["data1", "data2"], priority);
    
    //// push from Mapx
    // import Mapx from "@drumtj/mapx";
    // var map = new Mapx();
    // queue.pushFromMapx(map) // return keys;
    
    queue.set("key1", "data1", priority);
    let data = queue.get("key1");
    let has = queue.has("key1");
    let data2 = queue.shift(); //Extract first data and remove from array
    queue.delete("key1");
    queue.destroy(); //destroy
    queue.reset();//destroy and init

    Examples

    License

    MIT

    Install

    npm i @drumtj/task-queue

    DownloadsWeekly Downloads

    1

    Version

    1.0.34

    License

    MIT

    Unpacked Size

    220 kB

    Total Files

    8

    Last publish

    Collaborators

    • drumtj