1.0.34 • Published 4 years ago

@drumtj/task-queue v1.0.34

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

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

1.0.34

4 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.26

5 years ago

1.0.25

5 years ago

1.0.24

5 years ago

1.0.23

5 years ago

1.0.22

5 years ago

1.0.21

5 years ago

1.0.20

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 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