async-time
Version:
Time async functions using async-done for execution and completion.
74 lines (49 loc) • 1.98 kB
Markdown
async-time
==========
[](https://travis-ci.org/phated/async-time)
Time async functions using async-done for execution and completion.
```js
var EE = require('events').EventEmitter;
var createTimer = require('async-time');
var bus = new EE();
var asyncTime = createTimer(bus);
// listen for timing events
bus.on('start', function(evt){
// function has started
console.log(evt);
});
bus.on('stop', function(evt){
// function has stopped
console.log(evt);
});
asyncTime(function(cb){
// do async things
cb(null, 2);
}, function(err, res){
// `error` will be undefined on successful execution of the first function.
// `result` will be the result from the first function.
})
```
__Once a timing function is created, it is used the same as [`async-done`](https://github.com/phated/async-done).__
The main export is a function that allows you to create a timing function.
You must pass it an `EventEmitter` instance (or an object with `emit` and `on` methods) or it will throw.
The `EventEmitter` instance is the bus timing events are published on.
See [`async-done`](https://github.com/phated/async-done) docs.
The event fired when a function begins.
__Properties:__
* `id`: uuid generated for each function. Useful for tying start and end events together.
* `name`: name property of the function given to `asyncTime`.
* `timestamp`: timestamp of when the function started.
The event fired when a function finishes.
__Properties:__
* `id`: uuid generated for each function. Useful for tying start and end events together.
* `name`: name property of the function given to `asyncTime`.
* `timestamp`: timestamp of when the function started.
* `duration`: high resolution time between start and stop events. Generated by `process.hrtime(startTime)`