2017-07-15 1 views
0
var express = require('express');  
var app  = express();     
var bodyParser = require('body-parser'); 

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var port = process.env.PORT || 8080;  

var router = express.Router();    

router.get('/', function(req, res) { 

    var test; 
    function SomeFunction(){ 

     ....some function that calculates a value 

     res.json({ message: 'Your value is' + test }); 

    } 






}); 

app.use('/api', router); 


app.listen(port); 

を応答する前に機能を実行します。立つと、サーバーはすぐに応答します。私はこれが非常に基本的だと確信していますが、私はどこにでも見て、応答を発行する前に私の高速サーバーが値を計算するのを待つ方法についての答えを見つけることができません。Expressは、私はそれを返す前に値を計算するために、いくつかの機能を実行したい

答えて

1

あなたはSomeFunctionどこでもあなたの関数を呼び出していません。あなたがそれを呼び出すならば、表現は待つでしょう。関数の定義の後に書いてください:SomeFunction();

+0

ありがとうございました!それはそれを見逃しているために、右の愚かです:) res'がスコープ内にすでにある 'ので、必要はありません –

1
var express = require('express');  
var app  = express();     
var bodyParser = require('body-parser'); 

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var port = process.env.PORT || 8080;  

var router = express.Router();    

router.get('/', function(req, res) { 

    var test; 
    function SomeFunction(res){ 

     ....some function that calculates a value 

     res.json({ message: 'Your value is' + test }); 

    } 

    //call it with res parameter 
    someFunction(res); 





}); 

app.use('/api', router); 


app.listen(port); 
+0

。 –

+0

はい、簡単な計算のためにそれは正しいのですが、あなたは、そのようなデシベルコールか何かのようなその関数内の任意の非同期メソッドを持っている場合には、私はそれがするので、それをパラメータとして送信される理由です、その呼び出しの解決状態の範囲にはなりませんresはいかなる状況においてもアクセス可能であること。 –

関連する問題