Node js排除/外包函数中的代码片段



>我必须使用几乎相同的代码在节点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));
});

您应该使用 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!')); 

最新更新