operate
v0.5.0
Published
Zones for JavaScript with Promise support
Downloads
11
Readme
operate
Installation
Install this package using NPM:
npm install operate
Examples
For a primer on zones, review the Dart introduction.
General concept
const operate = require('operate');
const fs = require('fs');
var fileContent = null;
// An application that does multiple unknown asynchronous operations
function application() {
function readFile () {
// Read file asynchronously
fs.readFile('data.txt', function callback (data) {
fileContent = data;
});
}
// Wait for 1 second and then start a request
setTimeout(readFile, 1000);
}
operate(application).then(
function () {
console.log('This file content has been read: ' + fileContent);
}
).catch(
function (error) {
console.log('Either setTimeout or fs.readFile threw an uncatched error');
}
);
Run untrusted code asynchronously
const vm = require('vm');
var sandbox = {
setTimeout,
setInterval,
setImmediate,
print: console.log
};
// Use operate in connection with vm to run a program in an isolated context
operate(
function () {
vm.runInNewContext(applicationCode, sandbox);
}
).then(
function () { console.log('Terminated successfully'); }
).catch(
function (error) { console.log('An error occurred'); }
);
Terminate a zone from outside
var zone = operate(application);
// Cancel all pending events after 1 minute
setTimeout(function () {
zone.cancel();
}, 60000);
// If node is stalling due to pending tasks in the operating zone,
// zone.cancel() will unstall it.
Execute zones parallely
Promise.all(
operate(app1),
operate(app2),
operate(app3)
).then(
function() { console.log('All tasks have concluded successfully'); }
).catch(
function() { console.log('An error occurred'); }
);
License
MIT © 2016 (see full text)