priority based work scheduler for javascript.
- ~700 bytes minified+gzipped
- Edge
- IE 8+
- Chrome
- Firefox
- Safari
- Node
<script src=schedula.min.js></script>
<script src=https://unpkg.com/schedula.js@0.1.2/schedula.min.js></script>
npm install schedula --save
// create a fiber
var fiber = schedula(60);
// push work
fiber.push(true, null, (a, b) => {
console.log(a, b);
}, 3, [1, 2]);
// slow things down, this will throttle work to a 20fps budget
schedule.budget = 20;
// speed things up, this will throttle work to a 60fps budget
schedule.budget = 60;
// context
var foo = {
bar: function (a, b) {
console.log(a, b);
}
}
fiber.push(true, foo, foo.bar, 3, [1, 2]);
// manually flush high priority work, without throttling
fiber.flush(true);
// manually flush low priority work, without throttling
fiber.flush(false);
push work
/**
* @param {boolean} priority - true for high priority
* @param {any} context - this context
* @param {function} callback - callback function
* @param {number} length - number of arguments passed
* @param {any[]} arguments - array of arguments passed
*/
manually flush work sync
/**
* @param {boolean} priority - true for high priority
*/
get/set budget
/**
* @type getter/setter
*/
get queued work.
/**
* @type getter
*/