当前位置:  开发笔记 > 编程语言 > 正文

express.js(或类似)应用程序的异步初始化

如何解决《express.js(或类似)应用程序的异步初始化》经验,为你挑选了0个好方法。

考虑一个例子:我有以下express.js应用程序(请参阅下面的代码片段).我希望在整个应用程序生命周期中有一个与DB的持久连接,以及一个与我自己的服务的持久连接(需要异步调用才能启动).还有一些入口点,即不仅可以通过HTTP协议访问我的应用程序.当然,我想避免服务初始化代码重复,并且可能有几个这样的异步初始化服务.

/* app.js */
var app = require('express')();
// set views, use routes, etc.
var db = require('monk/mongoose/etc')(...); // happily, usually it's a sync operation
var myService = require('./myService');     // however, it's possible to have several such services
myService.init(function(err, result) {
    // only here an initialization process is finished!
});

module.exports.app = app;


/* http_server.js (www entry point) */
var app = require('app');
// create an HTTP server with this app and start listening


/* telnet_server.js (other entry point) */
var app = require('app');
// create a Telnet server with this app and start listening

在上面的代码片段中,当http(或telnet或任何其他)服务器启动时,无法保证myService已经初始化.

所以,我必须以某种方式重新组织我的应用创建代码.现在我坚持下一个解决方案:

/* app.js */
var app = require('express')();
module.exports.app = app;
module.exports.init = function(callback) {
    var myService = require('./myService');
    myService.init(callback);     
}

/* entry_point.js */
var app = require('app');
app.init(function(err) {
    if (!err) {
        // create an HTTP/Telnet/etc server and start listening
    }
});

所以,我的问题是:初始化服务需要异步调用启动的常用方法是什么?

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有