warm

This node.js module is useful if you want to load other modules and be sure all warming code is executed before you continue.
Quick usage
Install module into own project
# npm install --save warm
Create new class and call .parallel
method
Warm = requre('warm');
new Warm('./database', './redis').parallel(function (err) {
if(err) { throw err; }
console.log('Initial code was executed in all described modules');
});
Modules database
and redis
should return special method (.init
by default), which resolve promise or call callback on finish. See Modules
Options
You can pass additional options like plain object: new Warm({ ... }, 'module1', ...)
:
Name | Default | Description |
---|
.expect | promise | will init method inform about finish with promise (reject/resolve it), or will fire callback with error (expect: 'callback' ) |
.path | '' | prefix for requiring modules |
.strict | true | should return error if init method not found in module |
.init | init | init method name |
Samples
Warm = requre('warm');
options1 = {
expect: 'callback'
}
options2 = {
strict: true
}
new Warm(options1, ['./module1', './module2'], './module3', options2).parallel(console.log);
new Warm(require('./module3')).parallel(console.log);
new Warm('./module1').parallel().then(function () {
console.log('loaded');
}).catch(function (err) {
console.log('error:', err);
})
Modules
Module should contain method .init
(or other, described in options) which will return promise or file callback. Example:
module.exports = function () {
return 'i will not fire';
};
module.exports.init = function (callback) {
setTimeout(function () {
console.log('>>> i will fire durning warming');
callback();
}, 100);
};
Additional samples can be found in test folder