now forking a seperate process to work when node is busy

This commit is contained in:
2016-05-23 04:40:04 +02:00
parent 7f4adbfe9f
commit 1ceae01a49
6 changed files with 128 additions and 109 deletions

52
ts/early.child.ts Normal file
View File

@@ -0,0 +1,52 @@
/// <reference path="./typings/index.d.ts" />
let colors = require("colors");
import readline = require("readline");
let rl;
let initReadline = () => {
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
};
let moduleName:string;
let loaderLength:number;
let frameCounter:number = 0;
let makeFrame = ():string => {
let resultString:string = "["
+ "/".green.repeat(frameCounter)
+ " ".repeat(loaderLength - frameCounter)
+ "]"
+ " starting "
+ moduleName.cyan;
if(frameCounter == loaderLength){
frameCounter = 0;
} else {
frameCounter++;
}
return resultString;
};
let logEarly = () => {
rl.write(null, {ctrl: true, name: 'u'});
rl.write(makeFrame());
setTimeout(function(){
logEarly();
},200);
};
let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
console.log(moduleNameArg);
moduleName = moduleNameArg;
loaderLength = parseInt(loaderLengthArg);
if (!process.env.CI){
initReadline();
logEarly();
} else {
console.log("**** starting " + moduleName.cyan + " ****");
};
};
start(process.env.moduleNameArg,process.env.loaderLengthArg);

View File

@@ -2,64 +2,19 @@
let colors = require("colors");
let readline = require("readline");
let rl;
let initReadline = () => {
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
import childProcess = require("child_process");
let earlyChild;
// exports
export let start = function(moduleNameArg:string = "",loaderLengthArg:string = "10"){
earlyChild = childProcess.fork("./dist/early.child.js",[],{
env: {
moduleNameArg:moduleNameArg,
loaderLengthArg:loaderLengthArg
}
});
};
let moduleName:string;
let loaderLength:number;
let frameCounter:number = 0;
let makeFrame = ():string => {
let resultString:string = "["
+ "/".green.repeat(frameCounter)
+ " ".repeat(loaderLength - frameCounter)
+ "]"
+ " starting "
+ moduleName.cyan;
if(frameCounter == loaderLength){
frameCounter = 0;
} else {
frameCounter++;
}
return resultString;
};
let abort:boolean = true;
let logEarly = () => {
rl.write(null, {ctrl: true, name: 'u'});
rl.write(makeFrame());
setTimeout(function(){
if(!abort){
logEarly();
}
},200);
};
// exports
export let start = function(moduleNameArg:string = "",loaderLengthArg:number = 10){
abort = false;
moduleName = moduleNameArg;
loaderLength = loaderLengthArg;
if (!process.env.CI){
initReadline();
logEarly();
} else {
console.log("**** starting " + moduleName.cyan + " ****");
};
};
export let stop = function(){
abort = true;
if (!process.env.CI){
rl.write(null, {ctrl: true, name: 'u'});
rl.close();
}
earlyChild.kill();
};