Launch server after all async task ready
$ npm install ready-callbackNote: ready-callback is using class, so you should use node>=2
varkoa=require('koa');varready=require('ready-callback')();varapp=koa();ready.mixin(app);// register a servicevardone=app.readyCallback('service');serviceLaunch(done);// callback will be fired after all service launchedapp.ready(function(){app.listen();});If task is called with error, error event will be emit, ready will never be called.
// register a service that will emit errorvardone=app.readyCallback('service');serviceLaunch(function(err){done(err);});// listen error eventapp.on('error',function(err){// catch error});If you set a task weak dependency, task will be done without emit error.
vardone=app.readyCallback('service',{isWeakDep: true});serviceLaunch(function(err){done(err);});// will be readyapp.ready(function(){app.listen();});app.on('error',function(err){// never be called});You can also set for all ready-callback
varready=require('ready-callback')({isWeakDep: true});You can get status every callback end.
app.on('ready_stat',function(data){console.log(data.id);// id of the ended taskconsole.log(data.remain);// tasks waiting to be ended});You can set timeout when a task run a long time.
varready=require('ready-callback')({timeout: 1000});ready.mixin(app);app.on('ready_timeout',function(id){// this will be called after 1s that `service` task don't complete});vardone=app.readyCallback('service');serviceLaunch(function(){// run a long timedone();});You can also set timeout for every task
ready.mixin(app);app.on('ready_timeout',function(id){// this will be called after 1s that `service` task don't complete});vardone=app.readyCallback('service1',{timeout: 1000});serviceLaunch(done);You can set a ready-callback object to lazyStart. It will not check ready status immediately, and should start manualy to check ready status.
varready=require('ready-callback')({lazyStart: true});yieldsleep(1);// ready obj is not readyready.start();yieldsleep(1);// ready obj is ready nowCopyright (c) 2015 popomore. Licensed under the MIT license.
popomore | fengmk2 | semantic-release-bot | greenkeeperio-bot | killagu | liuhanqu |
|---|
This project follows the git-contributor spec, auto updated at Wed Oct 11 2023 10:27:33 GMT+0800.