Node.js 在express.js中完成处理请求
当我有一个简单的函数来处理请求时,我可以使用res.end并在任何时候返回以结束它,例如发生了一些错误/不正确的数据等Node.js 在express.js中完成处理请求,node.js,express,Node.js,Express,当我有一个简单的函数来处理请求时,我可以使用res.end并在任何时候返回以结束它,例如发生了一些错误/不正确的数据等 get('/', function (req, res) { if (!req.param('id')) { res.send('Must provide ID!'); res.end(); // <-- response is ready, send it to client return; // <-- r
get('/', function (req, res) {
if (!req.param('id')) {
res.send('Must provide ID!');
res.end(); // <-- response is ready, send it to client
return; // <-- request processing stops here, get() finishes
}
// do other stuff
res.send('ok'); // <-- this can never overlap with the previous res.send()
});
我认为应该调用客户端res.end来发送响应,但是如何停止进一步的代码处理-即从所有函数返回?不可能从被调用的函数返回,只需使用如下回调:
function validate(req, res, callback) {
if (!req.param('id')) {
res.send('Must provide ID!');
res.end();
} else {
callback();
}
}
get('/', function (req, res) {
validate(req, function () {
res.send('ok');
});
});
无法从被调用函数返回,只需使用如下回调:
function validate(req, res, callback) {
if (!req.param('id')) {
res.send('Must provide ID!');
res.end();
} else {
callback();
}
}
get('/', function (req, res) {
validate(req, function () {
res.send('ok');
});
});
根据是否已发送响应,您可以在validate函数中返回true或false
但是,它不是节点样式。首选在节点中使用回调。根据是否已发送响应,您可以在验证函数中返回true或false
但是,它不是节点样式。在node中使用回调是首选。我知道这是一个老问题,但可能对其他人有帮助。你可以这样用
get('/', function (req, res) {
validate(req);
// will only be sent if validate hasn't already sent the error message
if(!res.headersSent) {
res.send('ok');
}
});
function validate(req, res) {
if (!req.param('id')) {
res.send('Must provide ID!');
res.end();
}
}
我知道这是一个老问题,但可能对其他人有帮助。你可以这样用
get('/', function (req, res) {
validate(req);
// will only be sent if validate hasn't already sent the error message
if(!res.headersSent) {
res.send('ok');
}
});
function validate(req, res) {
if (!req.param('id')) {
res.send('Must provide ID!');
res.end();
}
}
不能从被调用函数返回不能从被调用函数返回