node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

async-time

async-time

Build Status

Time async functions using async-done for execution and completion.

Usage

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. 
})

API

Once a timing function is created, it is used the same as async-done.

createTimer(EventEmitter) => Function

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.

asyncTime(fn, callback)

See async-done docs.

Events

start

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.

stop

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)