node js在函数中排除/外包代码片段

时间:2018-03-22 18:40:18

标签: javascript node.js routes

我必须在节点js中使用几乎相同的代码进行路由。我想在函数中排除这个代码,但是当我调用函数时,进程(路由)不会等待新函数的返回var。也许有人可以为我创造一个例子,我怎么能处理它。我认为这就像回调和承诺。

最佳,

西蒙

带快递的伪示例。

function getUser(variable) {
   return variable;
}

app.get('/user', function(req, res) {
  res.json(getUser(a));
});

app.get('/users', function(req, res) {
  res.json(getUser(b));
});

1 个答案:

答案 0 :(得分:0)

在进程完成之前,您应该使用promise来阻止进一步执行。

为了演示目的,我使用setTimeout来保存进程,因此路由必须等待最少5000毫秒才能解析承诺。一旦承诺得到解决,我们将获得当时的值,最后使用res.json将响应返回给客户端。

const express = require('express')
const bodyParser = require('body-parser');
const app = express();
var port = process.env.PORT || 3000; //lets the port be set by Hero

app.use(bodyParser.json());

function getUser(variable) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(variable);
        }, 5000);
    });
}
app.get('/user', function (req, res) {
    getUser("user-data").then((data) => {
        res.status(200).json({data: data});
    });
});

app.get('/info', function (req, res) {
    getUser("info-data").then((data) => {
        res.status(200).json({data: data});
    });
});

app.listen(port, () => console.log('Example app listening on port 3000!'));