now passing required loading time through promise

This commit is contained in:
Philipp Kunz 2016-09-15 14:59:22 +02:00
parent 140bfb4f5e
commit ac92f355d4
8 changed files with 47 additions and 37 deletions

View File

@ -10,7 +10,9 @@ early.start("myModuleName");
/* /*
do your loading stuff do your loading stuff
*/ */
early.stop(); // stop "early" when your module is ready early.stop().then((loadingTime:number) => { // loadingTime in milliseconds
}); // stop "early" when your module is ready
``` ```
early runs in its own process: The loader animation runs smoothly even when your event queue of your currently loading module is working heavily. early runs in its own process: The loader animation runs smoothly even when your event queue of your currently loading module is working heavily.

2
dist/index.d.ts vendored
View File

@ -2,4 +2,4 @@
import 'typings-global'; import 'typings-global';
import q = require('q'); import q = require('q');
export declare let start: (moduleNameArg?: string, loaderLengthArg?: string) => void; export declare let start: (moduleNameArg?: string, loaderLengthArg?: string) => void;
export declare let stop: () => q.Promise<void>; export declare let stop: () => q.Promise<number>;

13
dist/index.js vendored
View File

@ -35,18 +35,19 @@ exports.start = function (moduleNameArg = '', loaderLengthArg = '10') {
exports.stop = () => { exports.stop = () => {
let done = q.defer(); let done = q.defer();
let endTime = Date.now(); let endTime = Date.now();
let executionTime = ((endTime - startTime) / 1000).toString(); let earlyExecutionTime = (endTime - startTime);
let earlyExecutionTimeString = (earlyExecutionTime / 1000).toString();
if (doAnimation) { if (doAnimation) {
earlyChild.kill('SIGINT'); earlyChild.kill('SIGINT');
earlyChild.on('close', function () { earlyChild.on('close', function () {
console.log(`loaded ${chalk.green(moduleName)} in ${executionTime} seconds!`); console.log(`loaded ${chalk.green(moduleName)} in ${earlyExecutionTimeString} seconds!`);
done.resolve(); done.resolve(earlyExecutionTime);
}); });
} }
else { else {
console.log(`... finished loading ${moduleName} in ${executionTime}`); console.log(`... finished loading ${moduleName} in ${earlyExecutionTimeString}`);
done.resolve(); done.resolve(earlyExecutionTime);
} }
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFDUCxDQUFDLENBRHNCO0FBQ3ZCLE1BQU8sSUFBSSxXQUFXLE1BQU0sQ0FBQyxDQUFBO0FBQzdCLE1BQU8sS0FBSyxXQUFXLE9BQU8sQ0FBQyxDQUFBO0FBQy9CLE1BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZCLE1BQU8sWUFBWSxXQUFXLGVBQWUsQ0FBQyxDQUFBO0FBQzlDLElBQUksVUFBVSxDQUFBO0FBRWQsSUFBSSxXQUFXLEdBQVksSUFBSSxDQUFBO0FBQy9CLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQTtBQUMzQixJQUFJLFVBQVUsR0FBVyx1QkFBdUIsQ0FBQTtBQUNoRCxJQUFJLFNBQVMsQ0FBQTtBQUViLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxXQUFXLEdBQUcsS0FBSyxDQUFBO0FBQ3ZCLENBQUM7QUFDRCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsTUFBTSxHQUFHLElBQUksQ0FBQTtBQUNqQixDQUFDO0FBRUQsVUFBVTtBQUNDLGFBQUssR0FBRyxVQUFVLGFBQWEsR0FBVyxFQUFFLEVBQUUsZUFBZSxHQUFXLElBQUk7SUFFbkYsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUV0QixVQUFVLEdBQUcsYUFBYSxDQUFBO0lBQzFCLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDZCxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN2RSxHQUFHLEVBQUU7Z0JBQ0QsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLGVBQWUsRUFBRSxlQUFlO2dCQUNoQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2FBQ3JCO1NBQ0osQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25FLENBQUM7QUFDTCxDQUFDLENBQUE7QUFFVSxZQUFJLEdBQUc7SUFDZCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFRLENBQUE7SUFDMUIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3hCLElBQUksYUFBYSxHQUFXLENBQUMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDckUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNkLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDekIsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUU7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sYUFBYSxXQUFXLENBQUMsQ0FBQTtZQUM3RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixVQUFVLE9BQU8sYUFBYSxFQUFFLENBQUMsQ0FBQTtRQUNyRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDbEIsQ0FBQztJQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFDUCxDQUFDLENBRHNCO0FBQ3ZCLE1BQU8sSUFBSSxXQUFXLE1BQU0sQ0FBQyxDQUFBO0FBQzdCLE1BQU8sS0FBSyxXQUFXLE9BQU8sQ0FBQyxDQUFBO0FBQy9CLE1BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZCLE1BQU8sWUFBWSxXQUFXLGVBQWUsQ0FBQyxDQUFBO0FBQzlDLElBQUksVUFBVSxDQUFBO0FBRWQsSUFBSSxXQUFXLEdBQVksSUFBSSxDQUFBO0FBQy9CLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQTtBQUMzQixJQUFJLFVBQVUsR0FBVyx1QkFBdUIsQ0FBQTtBQUNoRCxJQUFJLFNBQVMsQ0FBQTtBQUViLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxXQUFXLEdBQUcsS0FBSyxDQUFBO0FBQ3ZCLENBQUM7QUFDRCxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsTUFBTSxHQUFHLElBQUksQ0FBQTtBQUNqQixDQUFDO0FBRUQsVUFBVTtBQUNDLGFBQUssR0FBRyxVQUFVLGFBQWEsR0FBVyxFQUFFLEVBQUUsZUFBZSxHQUFXLElBQUk7SUFFbkYsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUV0QixVQUFVLEdBQUcsYUFBYSxDQUFBO0lBQzFCLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDZCxVQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUN2RSxHQUFHLEVBQUU7Z0JBQ0QsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLGVBQWUsRUFBRSxlQUFlO2dCQUNoQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2FBQ3JCO1NBQ0osQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ25FLENBQUM7QUFDTCxDQUFDLENBQUE7QUFFVSxZQUFJLEdBQUc7SUFDZCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFVLENBQUE7SUFDNUIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3hCLElBQUksa0JBQWtCLEdBQVcsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUE7SUFDdEQsSUFBSSx3QkFBd0IsR0FBVyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzdFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDZCxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3pCLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLHdCQUF3QixXQUFXLENBQUMsQ0FBQTtZQUN4RixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDcEMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixVQUFVLE9BQU8sd0JBQXdCLEVBQUUsQ0FBQyxDQUFBO1FBQ2hGLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBIn0=

View File

@ -74,7 +74,9 @@ early.start(<span class="hljs-string">"myModuleName"</span>);
<span class="hljs-comment">/* <span class="hljs-comment">/*
do your loading stuff do your loading stuff
*/</span> */</span>
early.stop(); <span class="hljs-comment">// stop "early" when your module is ready</span> early.stop().then((loadingTime:<span class="hljs-built_in">number</span>) =&gt; { <span class="hljs-comment">// loadingTime in milliseconds</span>
}); <span class="hljs-comment">// stop "early" when your module is ready</span>
</code></pre> </code></pre>
<p>early runs in its own process: The loader animation runs smoothly even when your event queue of your currently loading module is working heavily.</p> <p>early runs in its own process: The loader animation runs smoothly even when your event queue of your currently loading module is working heavily.</p>
</div> </div>

2
test/test.d.ts vendored
View File

@ -1 +1 @@
import "typings-test"; import 'typings-test';

View File

@ -1,15 +1,17 @@
"use strict"; "use strict";
require("typings-test"); require('typings-test');
const early = require("../dist/index"); const early = require('../dist/index');
describe("early", function () { describe('early', function () {
it(".start()", function (done) { it('.start()', function (done) {
this.timeout(10000); this.timeout(10000);
early.start("early"); early.start('early');
setTimeout(done, 5000); setTimeout(done, 5000);
}); });
it(".stop()", function (done) { it('.stop()', function (done) {
early.stop() early.stop()
.then(done); .then(() => {
done();
});
}); });
}); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FBYyxDQUFDLENBQUE7QUFDdEIsTUFBTyxLQUFLLFdBQVcsZUFBZSxDQUFDLENBQUM7QUFFeEMsUUFBUSxDQUFDLE9BQU8sRUFBQztJQUNiLEVBQUUsQ0FBQyxVQUFVLEVBQUMsVUFBUyxJQUFJO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixVQUFVLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsRUFBRSxDQUFDLFNBQVMsRUFBQyxVQUFTLElBQUk7UUFDdEIsS0FBSyxDQUFDLElBQUksRUFBRTthQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sY0FDUCxDQUFDLENBRG9CO0FBQ3JCLE1BQU8sS0FBSyxXQUFXLGVBQWUsQ0FBQyxDQUFBO0FBRXZDLFFBQVEsQ0FBQyxPQUFPLEVBQUM7SUFDYixFQUFFLENBQUMsVUFBVSxFQUFDLFVBQVMsSUFBSTtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25CLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDcEIsVUFBVSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNGLEVBQUUsQ0FBQyxTQUFTLEVBQUMsVUFBUyxJQUFJO1FBQ3RCLEtBQUssQ0FBQyxJQUFJLEVBQUU7YUFDUCxJQUFJLENBQUM7WUFDRixJQUFJLEVBQUUsQ0FBQTtRQUNWLENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQSJ9

View File

@ -1,14 +1,16 @@
import "typings-test"; import 'typings-test'
import early = require("../dist/index"); import early = require('../dist/index')
describe("early",function(){ describe('early',function(){
it(".start()",function(done){ it('.start()',function(done){
this.timeout(10000); this.timeout(10000)
early.start("early"); early.start('early')
setTimeout(done,5000); setTimeout(done,5000)
}); })
it(".stop()",function(done){ it('.stop()',function(done){
early.stop() early.stop()
.then(done); .then(() => {
done()
})
}) })
}) })

View File

@ -36,19 +36,20 @@ export let start = function (moduleNameArg: string = '', loaderLengthArg: string
} }
} }
export let stop = (): q.Promise<void> => { export let stop = (): q.Promise<number> => {
let done = q.defer<void>() let done = q.defer<number>()
let endTime = Date.now() let endTime = Date.now()
let executionTime: string = ((endTime - startTime) / 1000).toString() let earlyExecutionTime: number = (endTime - startTime)
let earlyExecutionTimeString: string = (earlyExecutionTime / 1000).toString()
if (doAnimation) { if (doAnimation) {
earlyChild.kill('SIGINT') earlyChild.kill('SIGINT')
earlyChild.on('close', function () { earlyChild.on('close', function () {
console.log(`loaded ${chalk.green(moduleName)} in ${executionTime} seconds!`) console.log(`loaded ${chalk.green(moduleName)} in ${earlyExecutionTimeString} seconds!`)
done.resolve() done.resolve(earlyExecutionTime)
}) })
} else { } else {
console.log(`... finished loading ${moduleName} in ${executionTime}`) console.log(`... finished loading ${moduleName} in ${earlyExecutionTimeString}`)
done.resolve() done.resolve(earlyExecutionTime)
} }
return done.promise return done.promise
} }