2017-07-15 89 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调用或类似的东西,功能的异步方法水库不会在通话,这就是为什么我把它作为参数,这样它会的决心状态的范围在任何情况下都可以访问。 –