node-context

0.7.0 • Public • Published

Context Build Status

Context type that carries deadlines, cancelation signals, and other request-scoped values.

Influenced by Go's context.

Documentation

### context.Context([options])

Initialize a new context.

Options

  • deadline (Number, optional): time when request expires (milliseconds since Unix epoch)
  • timeout (Number, optional): duration in milliseconds until request expires
  • parent (Context, optional): parent context; inherits deadlines, cancelation signals, and properties
### Event: 'cancel'

Emitted when the request exceeds it's deadline or is canceled.

This is only emitted once.

### Event: 'finish'

Emitted when the request is finished.

This is only emitted once.

### ctx.create([options])

Create and return a child context.

This accepts the same options as the context constructor and automatically sets the parent option.

Options

  • cancel (Boolean, default: true): inherit cancel/finish signals and deadline/timeout
  • values (Boolean, default: true): inherit values (shallow copy)
### ctx.cancel()

Cancel request immediately.

This is safe to call multiple times.

### ctx.canceled

True after canceled.

### ctx.deadline

Time in milliseconds when the request will be canceled if not finished.

### ctx.end()

Finish the request, this must be called at the end of the request.

It is safe to call multiple times.

### ctx.finished

True after finished.

### ctx.values([object])

Return context values.

If object is provided then the context values will be merged into it.

Example

var context = require('node-context');
 
function display(ctx, name) {
  ctx.once('cancel', function() {
    console.log('%s canceled after %d ms', name, new Date() - ctx.time);
  });
 
  ctx.once('finish', function() {
    console.log('%s finished', name);
  });
}
 
var parent = context();
parent.time = new Date();
 
var master = parent.create({ timeout: 1000 });
 
display(parent, 'parent');
display(master, 'master');
display(master.create({ timeout: 500 }), 'worker1');
display(master.create(), 'worker2');
 
process.on('beforeExit', function() {
  parent.end();
});

Output

worker1 canceled after 524 ms
worker1 finished
master canceled after 1007 ms
worker2 canceled after 1007 ms
worker2 finished
master finished
parent finished

License

This work is licensed under the MIT License (see the LICENSE file).

Package Sidebar

Install

npm i node-context

Weekly Downloads

6

Version

0.7.0

License

MIT

Last publish

Collaborators

  • silas