Context type that carries deadlines, cancelation signals, and other request-scoped values.
Influenced by Go's context.
### 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
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)
Cancel request immediately.
This is safe to call multiple times.
### ctx.canceledTrue after canceled.
### ctx.deadlineTime 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.finishedTrue after finished.
### ctx.values([object])Return context values.
If object
is provided then the context values will be merged into it.
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
This work is licensed under the MIT License (see the LICENSE file).