2017-07-15 99 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); 

我想執行某些功能返回之前計算的值之前執行的功能。現在服務器將立即響應。我確信這是非常基本的,但我無處不在,無法找到關於如何等待我的快遞服務器在發出響應之前計算該值的答案。快速響應

回答

1

你是不是叫你的函數SomeFunction任何地方。如果你打電話,快遞會等待。只需在函數定義之後寫入:SomeFunction();

+0

謝謝!這是對的,愚蠢的錯過了:) –

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

這不是必須的,因爲'res'已經在範圍之內了。 –

+0

是的,簡單的計算是正確的,但如果你有像當年DB調用或類似的東西,功能的異步方法水庫不會在通話,這就是爲什麼我把它作爲參數,這樣它會的決心狀態的範圍在任何情況下都可以訪問。 –