briskit
v1.1.1
Published
High-priority asynchronous task queue
Downloads
10
Maintainers
Readme
briskit
a high-priority asynchronous task queue.
(adapted from kriskowal/asap)
usage
assuming we have access to a high-priority async method (like MutationObserver
, MessageChannel
, or setImmediate
):
setTimeout(function() {
console.log('this will print third');
});
briskit(function() {
console.log('this will print second');
});
(function() {
console.log('this will print first');
}());
briskit
will use setTimeout
as the async provider if nothing better is available.
instances
multiple briskit
instances can be created with the fork
method. each instance will independently execute its own stack.
var $briskit = briskit.fork();
execution
execution of a briskit
instance's stack can be stopped and started with the defer
and flush
methods, respectively.
var $briskit = briskit.fork();
$briskit.defer();
$briskit(function(){ console.log( "I'm deferred!" ) });
briskit(function(){ console.log( "I'm not!" ) }); // -> I'm not!
$briskit.flush(); // -> I'm deferred!
providers
briskit
will use the best possible async provider for its environment, but if for whatever reason you would like to override that choice:
briskit.use( 'name' );
| Name | Native Method |
| ---- | ------------- |
| nextTic
| setImmediate
|
| observer
| MutationObserver
|
| worker
| MessageChannel
|
| timeout
| setTimeout
|
use
will also accept a function that returns a custom provider. a custom, synchronous provider might look something like:
briskit.use(function() {
return function( cb ) {
cb();
};
});
stack
the briskit stack can be used as a standalone class. all parameters are optional:
| Parameter | Type | Default | Description |
| --------- | ---- | ------- | ----------- |
| autoflush
| boolean
| false
| When true, the stack will attempt to flush as soon as a callback is enqueued. |
| provider
| function
| function( cb ){ cb() }
| The function used for flush calls. Synchronous by default. |
| prealloc
| number
| 1024
| The preallocated stack size. |
// commonjs
var stack = briskit.stack( true );
// ES6 (requires compilation)
import Stack from 'briskit/src/stack';
var stack = new Stack( true );
// usage
stack.defer();
stack.enqueue(function() {
// ...
});
stack.flush();