私は、アプリケーションを起動する前に、非同期操作(たとえば、URL呼び出しが完了するのを待つ)を実行します。私はそれを行う方法がわかりません(それは上位アプリケーションなので非同期/ここで待っています)。express.jsが始まる前に非同期関数を実行する
www.js:
var app = require('./app');
var http = require('http');
const port = '3000';
app.set('port', port);
var server = http.createServer(app);
server.listen(port);
app.js:
var express = require('express');
var app = express();
var Promise = require('bluebird');
# HERE IS WHERE I WANT TO "AWAIT" AN ASYNCHRONOUS CALL.
# I KNOW I CAN'T USE AWAIT BECAUSE I'M NOT WITHIN
# AN "ASYNC" ANNOTATED FUNCTION. EXAMPLE:
const data = await Promise.promisify(fs.readFile('DATA'));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
module.exports = app;
私はPromise.promisify(とapp.js
のすべてを包む考えた)ので、私はそれをwithing待つ非同期使用することができます。しかし、私はそれが呼び出されていないので、それはapp()
のように、www.js
に処理されるかどうかはわかりませんが、あなたが言ったものからhttp.createServer
約束のチュートリアルを参照しましたか?ここでは良いスタートです:https://github.com/kriskowal/q –
*何*非同期呼び出し?また、 'app.js'はエクスポートを表示しませんが、それを持っているかのように使用しています。 –
@ T.J.Crowderあなたが正しいです。私の悪い。エクスポートを追加してファイルを読み込むように編集しました(同期バージョンがあることを知っていますが、そうでないと仮定しましょう。または他の約束された呼び出しを使用しています) – eran